• 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.推荐使用

            <?php foreach($list as $item);?>

            <?=$item['name']?>

            <?php endforeach;?>

    超级对象

        当前的控制器对象

        提供了很多属性:

        $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的自动加载
        applicationconfigautoload.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);//使用问号绑定查询

    扩展CI控制器

        application/core/MY_Controller.php

        控制器就可以继承自MY_Controller

        application/config/config.php

        $config['subclass_prefix'] = 'MY_';

    模型

        在模型中,可以直接使用超级对象中的属性

  • 相关阅读:
    解决Chrome关联HTML文件,图标不显示的问题。
    Tomcat启动超时问题Server Tomcat v7.0 Server at localhost was unable to start within 45 seconds
    matlalb 的后台运行方式
    新转移注意(caffe):ImportError: libcudart.so.7.0: cannot open shared object file: No such file or directory
    查看nvidia显卡命令
    train validation test
    lmdb数据格式
    github
    2016 hosts
    opencv3.0 imread问题
  • 原文地址:https://www.cnblogs.com/corvoh/p/4655600.html
Copyright © 2020-2023  润新知