CodeIgniter的快速操作
摘自:http://www.coolni.cn/me/?post=27
经过两天对CodeIgniter的学习, CI的官方手册没有说得详细,特别是还有很多没有翻译完整。比起ThinkPHP框架的手册来说,可是差远了,也是CI不是国产嘛,呵呵。
本人EN不好看起来很是吃力的说,so,看完了总会有些体会吧总结了一些东东放上来,希望对学习这个框架的新手有点帮助。
URL的访问:
格式:http://域名/index.php/类/函数/参数
说明:
1. 第一段表示调用控制器类。
2. 第二段表示调用类中的函数或方法。
3. 第三及更多的段表示的是传递给控制器的参数,如 ID 或其他各种变量。
保留字:
函数名 :
is_really_writable(), load_class(), get_config(), config_item(),
show_error(), show_404(), log_message(), _exception_handler(),
get_instance()
变量名 :
$config, $mimes, $lang
控制器类:
class Blog extends Controller
{
//默认执行的方法
function index([参数名1=初值1[,参数名2=初值2,...]]){
echo 'hello world!';
echo $参数名1,$参数名2;
}
}
访问方式: http://域名/index.php/blog/参数值1/参数值2
注意:类名必须首字母大写 ; 类文件名必须与类名一致(首字母无须大写,如: blog.php)。
将控制器放入子文件夹中:
application/controllers/文件夹名称/shoes.php
那么对应的访问方式:
http://域名/index.php/文件夹名称/shoes
目录结构:
/ 根目录
/application 应用程序所在的目录(即,这里是我们工作的目录)
config/ 网站的一些常用配置
autoload.php 自动加载资源配置文件
database.php 数据库配置,可以设置成2维数组以现实多数据库配置
controllers/ 存入所有控制器程序文件
views/ 视图文件夹,存入模板文件的地方(模板默认扩展文件名为*.php)
helpers/ 优先载入的辅助函数,项目中的
plugins/ 优先载入的插件,项目中的
libraries/ 用户自定义的功能类库
errors/ 显示错误信息的页面模板
/helpers 框架的辅助函数
/plugins 插件
/libraries 框架自带的类库文件
/language 语言包文件
更改框架的文件夹路径:
index.php (入口文件) 文件里:
$system_folder = "CodeIgniter框架所在的路径";
$application_folder = "应用程序所在的路径";
数据库的操作:
建立模型类:
class 模型类名称 extends Model {
//初始化模型
public function __construct( )
{
parent::Model( );
$this -> load -> database( );
}
public function 方法名称(参数列表)
{
[$this -> db ->方法(xxx); //操作数据库
语句...]
}
}
注意: 模型类名称首字母大写, 文件名无须大写
载入模型:
在控制类的方法中使用 $this->load->model('模型类名称'); 载入指定模型
载入后就可以这样使用了: $this->模型类名称->方法名称([参数]);
数据库的连接:
自动连接: 可在autoload.php文件中的 library 数组里添加 database
手动连接: 可以在你有需要的函数里手工添加: $this->load->database([数据库信息配置的数组名]);
得到数据库操作对象: $this->db , 如果多个数据库连接:
$DB1 = $this->load->database('group_one', TRUE);
$DB2 = $this->load->database('group_two', TRUE);
则数据库操作对象为: $DB1 和 $DB2
查询:
1. 无条件查询
$query = $this->db->get('数据表名'[,每页纪录数,偏移]);
//遍历查询到的记录
foreach ($query->result() as $row)
{
echo $row->title;
}
2. 带多条件查询
$query = $this->db->get_where('数据表名',条件数组[,每页纪录数,偏移]);
3. 自定义查询 (推荐使用)
$this->db->where("name='Joe' AND status='boss' or status='active'");
$query = $this->db->get('数据表名');
4. 取出记录数和记录集数组
$rs = $query->result_array(); //取得查询中的记录(数组型式)
$n = $query->num_rows(); //取得查询中的记录数
5.统计数据表中的记录总数
$this->db->where(条件); //条件
$num = $this->db->count_all_results('数据表名'); //统计记录数量,(如果省略上一行条件,则统计表中所有记录数)
6.联合查询 join()
$this->db->select('*');
'数据表名')
$this->db->join('comments', 'comments.id = blogs.id');
$query = $this->db->get(;
添加记录:
//设置记录的各字段值到数组中
$data['title'] = $title;
$data['name'] = $name;
$data['date'] = $date;
//写入记录
$this->db->insert('数据表名', $data);
//返回刚才插入的记录的id,需要紧跟在insert操作之后才能返回正确的结果.
$id = $this->db->insert_id();
//取得受影响的记录数
$n = $this->db->affected_rows();
修改记录:
//设置要修改的字段的值
$data['title'] = $title;
$data['name'] = $name;
$data['date'] = $date;
//修改记录
$this->db->where('uid', $uid);
$this->db->update('数据表名',$data);
//取得受影响的记录数
$this->db->affected_rows();
删除记录:
$this->db->delete('数据表名',"条件语句字符串");
//取得受影响的记录数
$this->db->affected_rows();
事务处理:
//开始一个事务
$this->db->trans_start();
//提交事务
$this->db->trans_complete();
//回滚
$this->db->trans_rollback();
缓存: 可以将每个页面缓存
只需将下面的代码放在你的controller的function中的任何位置:
$this->output->cache(要缓存的分钟数);
如果缓存文件过期,它将被删除并重新生成。
开发中使用[分析器]:
在控制器中设置以下方法以激活该分析器
$this->output->enable_profiler(TRUE);
分析器激活后将产生一个报告并插入您的页面底部
分页类:
//载入分页功能类
$this->load->library('pagination');
//设置分页参数:
$config['base_url'] = 'http://example.com/index.php/test/page/'; 這是一個完整的 URL 路徑通向包含你的分頁控制器類/方法。
$config['total_rows'] = '200'; //记录总数
$config['per_page'] = '20'; //每页记录数
$config['uri_segment'] = 3; //指定页码的参数所在URL中是第几个参数(默认是第3个)
//初始化分页类
$this->pagination->initialize($config);
//输出分页代码
echo $this->pagination->create_links();
模板:
$arr[0]['字段名'] = 字段值; //记录1数据
$arr[1]['字段名'] = 字段值; //记录2数据
//将模板中的变量值存入数组
$data['数组名'] = $arr;
$data['变量名'] = "My Real Title";
//载入模板,以及数据,合成页面并输出
$this->load->view('blogview', $data);
//载入模板与数据,返回一个变量(合成后的页面)
$html = $this->load->view('blogview',$data,true);
标签:
对于模板中用于程序控制的部分不如直接使用<?php ... ?>代码来得更快。
普通变量输出: {变量名}
数组循环输出:
{数组名}
{数组元素名1}
{数组元素名2}
{/数组名}
快速操作:
Session 操作:
//载入Session类
$this->load->library('session');
//单个写入
$this->session->set_userdata('some_name', 'some_value');
//批量写入
$newdata = array('username'=>'johndoe','email'=>'johndoe@some-site.com','logged_in'=>TRUE);
$this->session->set_userdata($newdata);
//清除现有的 session
$this->session->sess_destroy();