用户
 找回密码
 入住 CI 中国社区
搜索
查看: 3375|回复: 2
收起左侧

开个帖记录点学习笔记

[复制链接]
发表于 2010-4-17 20:58:44 | 显示全部楼层 |阅读模式
本帖最后由 来自大连 于 2010-4-17 23:29 编辑

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

url部分

如何去掉URL中的index.php
通过 .htaccess 文件来设置一些简单的规则删除它
  1. RewriteEngine on
  2. RewriteCond $1 !^(index\.php|images|robots\.txt)
  3. RewriteRule ^(.*)$ /index.php/$1 [L]
复制代码

如果你的项目不在根目录请把上面这一句改为:
  1. RewriteRule ^(.*)$ index.php/$1 [L]
复制代码

在上面的例子中,可以实现任何非 index.php、images 和 robots.txt 的 HTTP 请求都被指向 index.php


如何添加URL后缀
在config/config.php中修改
  1. $config['url_suffix'] = ""
复制代码

加上你想要的后缀名字


控制器部分

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


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


定义默认的控制器
在application/config/routes.php 中定义,默认的是如下的设置
  1. $route['default_controller'] = "welcome";
复制代码

将welcome修改成你想要的控制器(类)名


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


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


构造函数会在类被调用的时候自动执行,构造函数没有返回值,只是用来实现一些默认要执行的功能。php4与php5定义构造函数有所区别
php4:
  1. <?php
  2. class Blog extends Controller {
  3.        function Blog()
  4.        {
  5.             parent::Controller();
  6.        }
  7. }
  8. ?>
复制代码

php5:
  1. <?php
  2. class Blog extends Controller {
  3.        function __construct()
  4.        {
  5.             parent::Controller();
  6.        }
  7. }
  8. ?>
复制代码

注:不要忘记
  1. 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/中,类名的首字母必须大写,其他字母小写。并且确保你的类继承了基本模型类
  1. class User_model extends Model {

  2.     function User_model()
  3.     {
  4.         parent::Model();
  5.     }
  6. }
复制代码


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

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

载入模型并不会自动连接数据库,可以通过以下的方法连接数据库
  1. $this->load->model('Model_name', '', TRUE);
复制代码

以上这个方法感觉最简单,只需要设置一下第三个参数就好

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

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

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

  2. $CI->load->helper('url');
  3. $CI->load->library('session');
复制代码

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

  2.     function My_Email()
  3.     {
  4.         parent::CI_Email();
  5.     }
  6. }
复制代码

要载入扩展子类,你应该使用标准字符名. 请不要使用前缀
  1. $this->load->library('email');
复制代码
发表于 2010-6-27 17:19:32 | 显示全部楼层
顶一个!!
发表于 2010-7-7 17:14:27 | 显示全部楼层
我也在学习!

本版积分规则