zoukankan      html  css  js  c++  java
  • ci框架学习告一段落,总结一下

    wps_clip_image-16907

    从网上弄了一张框架学习思维导图,从图中就可以看出ci用了设计模式中的MVC架构,使得用起来很简单方便

    用了大概两个星期开发了一个《文章管理系统》觉得开发过程中学到了很多,挺不错的,而且在学习过程中,

    不断进取,不断学习是前进的动力。

    现在大概讲下ci的理解:

    ci包括models controllers views ,下载ci框架包后需要的就是aplication systerm(ci框架包) index.php总入口。

    数据库访问

    1. 修改配置文件:

    Application-àconfig à database.php

    注意:如果同时有多个数据库时可将defalut 那块代码复制一遍

    2. 在控制器中装载数据库操作类 $this->load->database() (是可以指点函数的当有多个数据库)后 框架自动加载数据库操作类驱动(app/config/autoload.php)到超级对象属性db中 

    设置自动加载数据库操作类: applicationàconfig->autoload.php

    3. 数据获取 

    $reslut=$this->db->query(); //结果是一个对象database文件夹下所有类的对象

    $result->result();//一个一个的数组对象 类似 mysql_fetch_object();

    $result->result_array();//返回二维数组里面是关联数组

    $result->row();//取第一条数据是对象 

    $result->row_array();//返回数组

    4. 数据添加

            $result=$this->db->query();//同mysql操作函数一样 返回值是布尔

    $this->insert_id();//返回增加的主键id 

    $this->affeched_rows();//受影响的记录条数

    安全提升:
    第一步:设定表前缀  application->config->database.php可以用一个常量来替换所有的表前缀 配置成相同的方便以后项目的维护修改

    第二步:绑定数据 

    例如将insert中 字段值列表用 ?代替 执行sql时将需要添加的数据封装到索引数组中

     

    AR模型

    1.开启AR模型后可以使用 model类中一系列的方法 

    如果是重新解压CI框架文件 需要:

    1. 设置数据库操作函数:application/config/database.php 进行设置

    2开启对数据库的自动加载 :application /config/autoload.php $autoload['libraries'] = array('database');

    2. 如果确定使用AR模型的话必须确定在数据操作类(database)的配置文件中确定 支持AR模型: app/config/database.php   $active_record = TRUE;

    3. 设置表前缀

    Application/config/database.php 设置了表前缀后会自动加载前缀

    4. 加载AR模型后可以使用mysql_result数据处理

    增加数据:

    $this->db->insert(‘表名’,关联数组);// 返回值为布尔;

    删除数据:

    $this->db->delete(‘表名’,条件关联数组);

    修改数据:

    $this->db->update(‘表名’,修改值得关联数组,条件的关联数组);

    查询数据:

    $result=$this->db->get(‘表名’);//等同于tp中的select()返回值是资源

    $result->result();

    查询数据的连环操作:

    方式一:

    $this->db->select(‘name,password’)//字段列表  不是tp中的select()方法

    ->from(‘表名’)//不加表前缀

    ->where(‘id >=’,3)//条件列表

    ->limit(2,3); //ci中limit方法中 开始位置和取值长度与sql相反

    ->order_by(‘tiaojian’);//

    ->get();

    方式二:

    $this->db->where(‘id =’,1)->get(‘表名’)

    $this->db->where(array(‘id’=>1,’name !=’=>’臭妮’))->get(‘表名’)

    查看上一条sql:echo last_query();

    注意:如果是复杂的查询采用

    $this->db->query($sql,$data);

    5. AR模型之控制器的扩展:

    Application/core下新建扩展的控制器文件

    Class MY_Controller extends CI_Controller{

    Public function __construct(){

    Parent::__constuct();

    //登陆 权限的验证

    }

    注:CI中 控制器的前缀的可以进行修改  application /config文件中可以进行修改

     

    CI框架可以自动实例化一些对象,并且把它放在超级对象的属性中

    超级对象的属性:

    CI装载器($this->loader)可以看成 $Object=new CI_loader();$this->load=$Object;可以装载的操作有:

       view() 装载视图  也可用来装载文件

       vars() 装载分配的变量

       database()装载数据库操作对象

       model() 装载模型对象

       helper()装载辅助函数

    路由解析($this->uri) 可以看成 $Object=new CI_URI(); $this->uri=$Object;

      ci框架的路由是分段截取的 参数为1-开始位置 入口文件.php/值1/值2/ (与tp框架不同的是ci框架路由仅有值无名)

       CI框架的路由参数获取方式

    方法一:

            segment() 特点:很便捷但是路由参数的顺序变得很重要  

    方法二:

    public function index($a,$b)  通过参数来获取路由的参数 特点:必须要有默认值参数顺序同样很重要 

    客户端信息提取($this->input)

    $this->input->post(); 

    $this->input->server();

    e.存放的是目录为view

    f.视图文件的加载方式:$this->load->view();视图文件名称不加后缀亦可写子目录

            d.视图文件中混编php代码

    h.变量分配的问题 $this->load->vars('title','这是标题'); 如果多变量分配将通过关联数组 $array['title'] $date['list']=$list 视图页 echo $title

    d.网站开发规范 应将头尾等公共部分分别放在文件中方便加载

     

     

    控制器:

    a.保证控制器类名称与控制器类文件名称一样(且文件名称大小问题因为人们输入习惯而变成了小写)无后缀 类名.php

    b.所有的控制器直接或间接继承CI_Controller类

    c.方法属性为 public时可被访问 

    d.控制器的对象:超级对象($this 当前类的当前对象) 可在控制器的任意方法中打印超级对象


    END
    ---------------------------------------------------------------------------------------------
    欢迎关注 我的微博@疯狂的迈步 我的github@junhey
  • 相关阅读:
    h5红包雨
    Reflect
    el-dialog对话弹框中根据后台数据无限制添加el-select标签,并进行展示,搜索,删除
    jQuery伪分页效果
    canvas实现验证码
    jQuery四叶草菜单效果,跟360杀毒软件差不多
    事件
    传参
    在shell script中进行数值运算的两种方法
    为maven插件设置参数的三种方法
  • 原文地址:https://www.cnblogs.com/junhey/p/3659459.html
Copyright © 2011-2022 走看看