来自大连 发表于 2010-4-17 20:58:44

开个帖记录点学习笔记

本帖最后由 来自大连 于 2010-4-17 23:29 编辑

发现这里没有UCH个人空间功能,有的话就好啦,可以在那里做些学习CI的笔记或是要点什么的,希望官方考虑一下。

url部分

如何去掉URL中的index.php
通过 .htaccess 文件来设置一些简单的规则删除它
RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1
如果你的项目不在根目录请把上面这一句改为:
RewriteRule ^(.*)$ index.php/$1
在上面的例子中,可以实现任何非 index.php、images 和 robots.txt 的 HTTP 请求都被指向 index.php



如何添加URL后缀
在config/config.php中修改
$config['url_suffix'] = ""
加上你想要的后缀名字


控制器部分

控制器文件都应该定义在application/controllers文件夹下


控制器(ctroller)就是一个类
uri/控制器/方法
就是调用某个类的某个方法



定义默认的控制器
在application/config/routes.php 中定义,默认的是如下的设置
$route['default_controller'] = "welcome";
将welcome修改成你想要的控制器(类)名



如何定义私有方法(不想让别人通过url中加入方法名来调用)
只要讲方法名定义为 _方法名即可



将控制器定义在controllers下不同的文件夹中,表示分别实现不同的功能,只需要在url对应的控制器前加上文件夹名字就可以正确调用了



构造函数会在类被调用的时候自动执行,构造函数没有返回值,只是用来实现一些默认要执行的功能。php4与php5定义构造函数有所区别
php4:
<?php
class Blog extends Controller {
       function Blog()
       {
            parent::Controller();
       }
}
?>
php5:
<?php
class Blog extends Controller {
       function __construct()
       {
            parent::Controller();
       }
}
?>
注:不要忘记
parent::Controller();


视图部分

视图文件都应该定义在application/views文件夹下



在控制器(类)中调用视图的方法
使用以下代码
$this->load->view('blogview');



将试图分别保存在views文件夹下不同的子目录内以表示不同的功能,在调用的时候加上相应的路径型就行了



可以通过定义调用view的方法中的第三个参数来设置是否直接输出到浏览器,默认是输出到浏览器的$string = $this->load->view('myfile', '', true);
设置为true的话将会将页面的内容返回到一个变量而不输出到浏览器


模型部分

与数据库相关的操作都应该在模型中定义



应该用$this->input->post('title')来取得变量,而不要使用$_POST['title']



模型应该存放在application/models/中,类名的首字母必须大写,其他字母小写。并且确保你的类继承了基本模型类
class User_model extends Model {

    function User_model()
    {
      parent::Model();
    }
}




在控制器中引用模型,如果模型文件在子文件夹下,引用的时候要带上相对路径名。
$this->load->model('Model_name');
$this->Model_name->function();



如何在整个项目中都自动加载某个模型
打开 application/config/autoload.php 文件,然后在自动装载数组中添加上这个模型


载入模型并不会自动连接数据库,可以通过以下的方法连接数据库
$this->load->model('Model_name', '', TRUE);
以上这个方法感觉最简单,只需要设置一下第三个参数就好



使用CI类库,CI的类库存放在system/libraries中
$this->load->library('class name');


自己创建的类库应该放在application/libraries中
文件名首字母大写
类声明首字母大写
类的名字和文件名应符合



在控制器中可以通过$this调用CI资源
在自定义类中通过以下方式调用CI资源
$CI =& get_instance();

$CI->load->helper('url');
$CI->load->library('session');




扩展CI类的方法
要以MY_作为类名前缀,必须在构造函数中显式继承母类构造函数
class MY_Email extends CI_Email {

    function My_Email()
    {
      parent::CI_Email();
    }
}

要载入扩展子类,你应该使用标准字符名. 请不要使用前缀
$this->load->library('email');

binbin19891117 发表于 2010-6-27 17:19:32

顶一个!!

hxfsc 发表于 2010-7-7 17:14:27

我也在学习!
页: [1]
查看完整版本: 开个帖记录点学习笔记