开个帖记录点学习笔记
本帖最后由 来自大连 于 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');
顶一个!! 我也在学习!
页:
[1]