您好,欢迎访问一九零五行业门户网

CodeIgniter框架学习要义

codeigniter框架学习要点
以下内容从兄弟连的ci教学视频中摘抄:
http://codeigniter.org.cn/tutorials/
-----------------------------------------------------------------------------------------------
codeigniter框架
-----------------------------------------------------------------------------------------------
讲师:邹义良
                                                                    微博:weibo.com/it266
-----------------------------------------------------------------------------------------------
主要内容
ci简介
深入mvc设计模式
ci中的控制器与视图
ci中的超级对象
数据库访问
ar模型
如何扩展ci的控制器
url相关函数
设置路由
分页
文件上传
session
验证码
表单验证
-----------------------------------------------------------------------------------------------
ci是什么?
    codeigniter是一个轻量级但功能强大的php框架
    基于mvc设计模式,提供了一套丰富的类库
    简单易学,高效实用
官方网站
    www.codeigniter.com
中文网站
    http://codeigniter.org.cn
下载当前最新版本
    codeigniter_2.1.4.zip
    (截止2015.7.1最新版为3.0.0——笔者注)
有什么特点?
    你想要一个小巧的框架
    你需要出色的性能
    你需要广泛兼容标准主机上的各种 php 版本和配置
        ci 2.1.4 需要php5.1.6
    你想要一个几乎只需 0 配置的框架
    你想要一个不需使用任何命令符的框架
    你想要一个不需坚守限制性编码规则的框架
    你不希望被迫学习一门模板语言(虽然可以选择你喜欢的模板解析器)
    你不喜欢复杂,热爱简单
    你需要清晰,完整的文档
目录结构说明
    license.txt  许可协议
    user_guide  用户手册
    syste  框架核心文件
    application  应用目录
    index.php  入口文件
-----------------------------------------------------------------------------------------------
mvc
1.入口文件
        唯一一个让浏览器直接请求的脚本文件
    2.控制器
        协调模型和视图
    3.模型
        提供数据,保存数据
    4.视图
        只负责显示
        表单...
    5.动作action
        是控制器中的方法,用于被浏览器请求
ci中的mvc
访问url使用的是pathinfo
    入口文件.php/控制器/动作
    application目录中:
        controllers 控制器
        models  模型
        views  视图
    默认控制器是welcome
    默认动作是index
控制器
1.不需要加后缀
    2.文件名全部小写    例如  user.php
    3.所有的控制器,直接或间接继承自ci_controller类
    4.控制器中,对动作(方法)要求:
        public
        不能以_开头
视图
1.在控制器中如果加载视图
        //直接写视图名字,不写扩展名,如果有子目录,则写上目录名
    2.视图中,直接使用原生php代码
    3.推荐使用
=$item['name']?>
超级对象
当前的控制器对象
    提供了很多属性:
$this->load
        装载器类的实例 system/core/loader.php
        装载器类提供的方法:
        view()  装载视图
        vars()  分配变量到视图
        database() 装载数据库操作对象
        model()   装载模型对象
        helper()
$this->uri
        是ci_uri类的实例 system/core/uri.php
        ci_uri类提供的方法:
        segment()用于获取uri中的参数
传统的:入口文件.php/控制器/动作/参数1/值1/参数2/值2
        入口文件.php/控制器/动作/值1/值2
echo $this->segment(3);//值1
        echo $this->segment(4);//值2
//index.php/控制器/index/6
        public function index($p=0){    echo $p;//输出6
        }
$this->input
        输入类
        是ci_uri类的实例 system/core/input.php
        ci_uri类提供的方法:
        $this->input->post('username');  //等价于$_post['username'];
        $this->input->server('document_root'); //等价于$_server['document_root'];        
        $this->input->server('remote_addr');
   在视图中,直接用$this来访问超级对象中的属性
数据库访问
修改配置文件
    application/config/database.php
    将数据库访问对象 装载到超级对象的属性中 $this->db
    $this->load->query($sql);//返回对象
$res=$this->db->query($sql);//返回对象
    $res->result();//返回数组,数组中是一个一个的对象
    $res->result_array();//返回二维数组,里面是关联数组
    $res->row()//返回第一条数据,直接是一个对象
参数绑定
    $sql=select * from blog_user where name=?;
    $this->db->query($sql,$name);//如果有多个问号时,需要传入一个索引数组
    表前缀
    $db['default']['dbprefix'] = 'new_';
    $db['default']['swap_pre'] = 'swap_';
配置为一样,代码中,直接硬编码表前缀就行了,如果以后项目数据库表前缀发生变化,
    只需要修改$db['default']['dbprefix'] = 'new_';代码中的swap_会自动替换为new_
    db的自动加载
    application\config\autoload.php
    $autoload['libraries'] = array(database);
    不需要:$this->load->database();
取自增id
    $this->db->insert_id();
    受影响行数
    $this->db->affected_rows();
active record
1.application/config/database.php
        确保$active_record = true;
    2.application/config/autoload.php
        $autoload['libraries'] = array(database);
    3.在配置文件中,正确配置表前缀后,会自动添加
$res->$this->db->get('表名');//返回结果集对象
    $res->result();
$bool=$this->db->insert('表名',关联数组);
$bool=$this->db->update('表名',关联数组,where条件);
$bool=$this->db->delete('表名',where条件);
//select uid,username from user where uid>=3 order by uid desc limit 2,3
    $res=$this->db->select('uid,username')
        ->from('user')
        ->where('uid >=',1)
        ->limit(3,2)//跳过2条,取出3条数据
        ->order_by('uid desc')
        ->get();
//显示最进一条sql语句
    echo $this->db->last_query();
//where
    //$res=$this->db->where('username','marry')->get('user');
    //$res=$this->db->where('username !=','marry')->get('user');
    //$res=$this->db->where('username','marry')->get('user');
    $res=$this->db->where(array('username'=>'hanyile','uid 3))->get('user');
    echo $this->db->last_query();
复杂的查询请用$this->db->query($sql,$data);//使用问号绑定查询
其它类似信息

推荐信息