首页 > 代码库 > CodeIgniter的学习

CodeIgniter的学习

经过两天对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 = http://www.mamicode.com/array(‘username‘=>‘johndoe‘,‘email‘=>‘johndoe@some-site.com‘,‘logged_in‘=>TRUE);
$this->session->set_userdata($newdata);
//清除现有的 session
$this->session->sess_destroy();

CodeIgniter的学习