1 CI不区分大小写
2. http://xxx.com/index/[控制器名称]/[控制器里面方法的确名称]/[传入方法的参数
]/

3. 控制器及控制器类名称与文件名称一致, 继承 CI_Controller 类,放在controller
文件里面

4. 控制器里的方法用数组传,模板放在 views里面,获取控制器方法中国传来的值时,用
传值时的 "$"+数组下标作变量名
5. 在方法里面加载模板时,用 $this->load->view("模板名称"[,参数])

6. 在 models 文件夹建立相应该的模型,文件格式为:名称_model.php(一般用表名方
便),模型类名与文件名一致,用 public function __construct()
{
$this->load->database();
}
加载数据库和连接数据库句柄
7. 在控制器文件中引入模型时,可以在控制器里面用构造函数引入,如 $this->load-
>model("模型类名")

8.所有的 php 文件 应该省略结束 ?>,在结束处加上注释即可
9.类名的首字母应该大字,如果名称由多个词组成,词之间要用下划线,类中所有其他方
法的名称应该完全小写,并且名称能明确指明这个函数的用途!

10. 变量的命名规则与方法的命名规则十分相似。就是说,变量名应该只包含小写字母
,用下划线分隔,并且能适当地指明变量的用途和内容。
11.常量命名除了要全部用大写外,其他的规则都和变量相同。

12.TRUE, FALSE, 和 NULL 关键字应该总是完全大写的。
13.|| 有时让人底气不足,因为在某些输出设备上它不够清晰(可能看起来像数字11).
&& 要优先于 AND 不过两者都可以接受, 在 ! 的前后都要加一个空格。

14.MySQL 的关键字一直大写: SELECT, INSERT, UPDATE, WHERE, AS, JOIN, ON, IN等

15.可能的话,请提供函数的默认参数,这样可以阻止诸如错误的调用的 PHP 错误,同
时可以获取公用的返回值,节约很多行代码。

16.为了能正确使用 base_url(); site_url() 函数提供的地址,在
application/config/autoload.php 文件中找到以下语句:
/*
| -------------------------------------------------------------------
|  Auto-load Helper Files
| -------------------------------------------------------------------
| Prototype:
|
|    $autoload['helper'] = array('url', 'file');
*/

$autoload['helper'] = array();
修改为
$autoload['helper'] = array('url');

----------------------------------------------

17.修改默认的控制器名称,如CI默认的名称是 welcome,可到
application/config/routes.php 中文件修改
$route['default_controller'] = "home";
-----------------------

是否要开启伪静态
    这样处理方便:
     1.确定 apache 支持 rewrite
     2.在index.php 同级目录下建 .htaccess文件,内容如下

RewriteEngine on   
RewriteCond $1 !^(index.php|images|robots.txt)   
RewriteRule ^(.*)$ /根目录/index.php/$1 [L]

其中上面的根目录如: http://localhost/ci/index.php,就把根目录换成 ci即可

3.application/config.php 文件下的
$config['index_page'] = 'index.php';
改为
$config['index_page'] = '';

---------------------------------------

数据库问题(防重名带来问题)
    仿zencart cms 的做法,在application/config/下建立数据库表名常量文件,如 my_database_table.php,写上内容
define('MYPREFIX', ''); // 定义前缀
define('LIN', MYPREFIX.'lin'); // 定义数据表名
define('LIN'1, MYPREFIX.'lin1'); // 定义数据表名
当在模型中操作数据表时,可用上面定义的常名表示数据表名

/* 不建议用这种包含这个数据表文件
同时在system/core/CodeIgniter.php 文件中包含数据表名文件,如:
// bof 包含 数据库表名的定义文件
require(APPPATH.'config/my_database_table.php');
*/

/*  建议用这种方式来保存数据表定义文件 */

增加了tablename.php数据表格文件,位于 application/config/tablename.php

在index.php 中增加了 require_once(APPPATH.'config/tablename.php');

// eof 包含 数据库表名的定义文件
-----------------------------------

session 会话如果要保存在数据库的话,操作如下:
参考本博客中定义的 session 保存方法

登录信息保存为 数据库中,增加了 sessions 数据表

增加了 Sess.php 文件,位于system/core/Sess.php

增加了tablename.php数据表格文件,位于 app/config/tablename.php

在index.php 中增加了 require_once(APPPATH.'config/tablename.php');

在system/core/CodeIgniter.php 增加了 require_once(BASEPATH.'core/Sess.php');

-------------------------------------------------------------------

关于自己制作验证码:
参考本博客地址:http://www.cnblogs.com/lin3615/p/3543537.html
制作验证码文件,如命名为 yzm.php
把 yzm.php 放在相应的目录,如根目录
在用到验证码的页面加上(路径一定是指定 yzm.php 文件所在的位置)
<img style="cursor:pointer" title="刷新验证码" id="linRefresh" border='0' src='<?php echo base_url();?>yzm.php'
onclick="document.getElementById('linRefresh').src='<?php echo base_url();?>yzm.php?t='+Math.random()"/>

==========================

引入 librarie/helper中的类及文件

加载自定义的类时,可放在 application/libraries/
如定义 Test.php

<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class CI_Test
{
   function __construct(){}
   funtion tmethod(){}
}

当要引入调用时,在控制器中这样引用
$this->load->library('test');
调用里面的方法时:
$this->test->tmethod();即可

加载自定义的函数时,可在 application/helpers/中定义
如 help_helper.php
<?php
if ( ! defined('BASEPATH')) exit('No direct script access allowed');
  function ok()
 {
    echo 'hi, lin3615';    
 }
在控制器中引用:
$this->load->helper('help'); //就是包含这个文件而已,然后就可以直接调用其方法了
ok(); // 输出 hi,lin3615

--------------------

其实
$this->load->model($model_name)
$this->load->library($library_name)
都是引入相应的类文件,并且实例化,返回的为相应的对象,

$this->load->model('mymodel'); // 返回的对象为:$this->mymodel
$this->load->library('mylibrary'); // 返回的对象为:$this->mylibray

$this->load->helper();
引入相关的文件
$this->load->helper('help'); // 引入 help_helper.php 文件

第一天的CI笔记的更多相关文章

  1. 《Linux内核设计与实现》 第一二章学习笔记

    <Linux内核设计与实现> 第一二章学习笔记 第一章 Linux内核简介 1.1 Unix的历史 Unix的特点 Unix很简洁,所提供的系统调用都有很明确的设计目的. Unix中一切皆 ...

  2. 第一行代码阅读笔记---AndroidMainfest.xml分析

    按照这本书的指引,我随作者一样创建了一个安卓应用,开始了安卓开发的启程. 找到AndroidMainfest.xml这个文件,打开后看到了我创建的Activity在这个文件里被成功注册,文件内容如下: ...

  3. Linux内核分析第一二章读书笔记

    linux读书笔记(1,2章) 标签(空格分隔): 20135328陈都 第一章 Linux内核简介 Unix的历史 Unix 虽然已经使用了40年,但计算机科学家仍然认为它是现存操作系统中最强大和最 ...

  4. 《HALCON数字图像处理》第一、二章笔记

    目录 第一章 绪论 1.1 图像和图像处理 1.1.1 图像 1.1.2 数字图像 1.1.3 图像处理及其发展过程 1.2 数字图像处理的步骤和方法 1.3 数字图像处理系统的硬件组成 1.4 数字 ...

  5. Python之路第一课Day8--随堂笔记(socket 承接上节---网络编程)

    本节内容 Socket介绍 Socket参数介绍 基本Socket实例 Socket实现多连接处理 通过Socket实现简单SSH 通过Socket实现文件传送 作业:开发一个支持多用户在线的FTP程 ...

  6. Python之路第一课Day7--随堂笔记(面向对象编程进阶...未完待续 )

    本节内容: 面向对象高级语法部分 静态方法.类方法.属性方法 类的特殊方法 反射 异常处理 Socket开发基础 作业:开发一个支持多用户在线的FTP程序 面向对象高级语法部分 一.静态方法 通过@s ...

  7. Python之路第一课Day6--随堂笔记(面向对象 )

    本节内容: 1. 面向对象编程介绍 2. 为什么要用面向对象进行开发? 3. 面向对象的特性:封装.继承.多态 4. 类.方法   一.面向过程 VS 面向对象  1. 编程范式 编程是 程序 员 用 ...

  8. Python之路第一课Day5--随堂笔记(模块)

    本节课程大纲: 1.模块介绍 2.time &datetime模块 3.random 4.os 5.sys 6.shutil 7.json & picle 8.shelve 9.xml ...

  9. Python之路第一课Day4--随堂笔记(迭代生成装饰器)

    上节回顾: 1.集合 a.关系测试 b.去重 2.文件操作及编码 3.函数 4.局部变量和全局变量 上节回顾 本节课内容: 1.迭代器生成器 2.装饰器 3.json pickle数据序列化 4.软件 ...

随机推荐

  1. head frist 设计模式学习之 JVM中的博物馆奇妙夜(观察者模式)

    博物馆奇妙夜! 博物馆奇妙夜!博物馆奇妙夜!重说三!!!JVM看了<博物馆奇妙夜>电影之后,决定在自己家里开一个博物馆!毕竟需要什么new一下就好,博物馆很快就开起来了,并且任命你为馆长( ...

  2. [Python]网络爬虫(一):抓取网页的含义和URL基本构成

    一.网络爬虫的定义 网络爬虫,即Web Spider,是一个很形象的名字. 把互联网比喻成一个蜘蛛网,那么Spider就是在网上爬来爬去的蜘蛛.网络蜘蛛是通过网页的链接地址来寻找网页的. 从网站某一个 ...

  3. ORA-01502: 索引或这类索引的分区处于不可用状态

    ORA-01502: 索引或这类索引的分区处于不可用状态 原因: 出现这个问题,可能有人move过表,或者disable 过索引.1. alter table xxxxxx move tablespa ...

  4. 将内容重定向到剪切板(clip.exe)

    Add-Type -Assembly PresentationCore[Windows.Clipboard]::SetText("abc中文def")先用 $output | Ou ...

  5. 读书笔记-HBase in Action-第二部分Advanced concepts-(1)HBase table design

    本章以山寨版Twitter为例介绍HBase Schema设计模式.广义的HBase Schema设计不仅仅包含创建表时指定项,还应该综合考虑Column families/Column qualif ...

  6. rnqoj-99-配置魔药-dp

    比较好的题目~~ dp[j][k]: 第一个容器在第i秒和第二个容器在第j秒,所产生的最大魔力. if(num[i].t2<=j)dp[j][k]=max(dp[j][k],dp[num[i]. ...

  7. Android实战技巧之六:PreferenceActivity使用详解

    一.写作前面 当我们做应用的时候,需要用户配置一些信息,而这就是通常所说的应用设置. 对于Android系统来说,系统本身的设置带来的用户体验和习惯已经深入人心,在我们的应用中同样用到类似的设置页, ...

  8. GDB反向调试 + 指令记录+函数历史记录

    http://blog.chinaunix.net/uid-26941022-id-3199961.html b.c void fun(int a, int b){ int c; c=a+b; } v ...

  9. UNIX环境高级编程---标准I/O库

    前言:我想大家学习C语言接触过的第一个函数应该是printf,但是我们真正理解它了吗?最近看Linux以及网络编程这块,我觉得I/O这块很难理解.以前从来没认识到Unix I/O和C标准库I/O函数压 ...

  10. (转载)equals与==

    引言:从一个朋友的blog转过来的,里面解决了两个困扰我很久的问题.很有久旱逢甘霖的感觉. 概述:        A.==可用于基本类型和引用类型:当用于基本类型时候,是比较值是否相同:当用于引用类型 ...