从网上弄了一张框架学习思维导图,从图中就可以看出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 当前类的当前对象) 可在控制器的任意方法中打印超级对象

ci框架学习告一段落,总结一下的更多相关文章

  1. 各种demo——CI框架学习

    各种demo——CI框架学习   寒假学习一下CI框架,请各位多多指教! 一.CI的HelloWorld! 注意:CI禁止直接通过文件目录来访问控制器. ./application/controlle ...

  2. PHP,mysql,Linux,CI框架学习总结

    PHP,mysql,CI框架学习总结 PHP标记 1.Xml风格<?php ?> 2.简短风格 <? ?> 需在php.ini中开启short_open_tag 3.asp风格 ...

  3. PHP CI框架学习

    CI框架的URL辅助函数使用 URL 辅助函数文件包含一些在处理 URL 中很有用的函数 加载辅助函数 在使用CI框架的使用经常碰到跳转和路径方面的问题,site_url()和base_url()很容 ...

  4. CI框架学习笔记

    打印SQL语句$this->dbRead->last_query(); 重映射方法正如上文所说,URI 的第二段通常决定控制器的哪个方法被调用.CodeIgniter 允许你使用 _rem ...

  5. CI框架学习——基本的用法(一)

    一.必备知识 1.如何访问你的页面 我在控制器下面建立了admin文件夹,此文件夹下有login.php 文件,我们现在要访问这个文件 http://localhost/gradesystem/ind ...

  6. 【ci框架学习】控制器-视图

    基础的东西就不写了,网上大把的教程,可以慢慢磨.这里说些要注意的要点. 1.所有控制器都必须间接或者直接继承控制器基类 CI_Controller. 2.文件命名尽量小写,因为ci使用的是pathin ...

  7. 【ci框架学习】环境搭建

    系统 -- Ubuntu 14.0(虚拟机linux 实体机Windows) 目标环境 -- lnmp 附加内容: 1.目录共享(方便代码编写) 2.使用secure crt终端软件连接(便于操作,不 ...

  8. PHP CI框架学习笔记-分页实现程序

    视图html  <div id="body"> <form action="/index.php/search/index/" method= ...

  9. ci框架学习中注意的事项

    视图: 加载视图:$this->load->view('name'); 一次可以加载多个视图,如: public function index() { $data['page_title' ...

随机推荐

  1. CF #CROC 2016 - Elimination Round D. Robot Rapping Results Report 二分+拓扑排序

    题目链接:http://codeforces.com/contest/655/problem/D 大意是给若干对偏序,问最少需要前多少对关系,可以确定所有的大小关系. 解法是二分答案,利用拓扑排序看是 ...

  2. JS自定义对象,正则表达式,JQuery中的一些知识点

    一:自定义对象 1.基本概念:①对象:包含一系列无序属性和方法的集合.②键值对:对象中的数据是以键值对的形式存在的,以键取值.③属性:描述对象特征的一系列变量.[对象中的变量]④方法:描述对象行为的一 ...

  3. 在ASP dot Net Core MVC中用Controllers调用你的Asp dotnet Core Web API 实现CRUD到远程数据库中,构建你的分布式应用(附Git地址)

    本文所有的东西都是在dot Net Core 1.1环境+VS2017保证测试通过. 本文接着上次文章接着写的,不了解上篇文章的可能看着有点吃力.我尽量让大家都能看懂.这是上篇文章的连接http:// ...

  4. C++STL vector详解(杂谈)

    介绍 这篇文章的目的是为了介绍std::vector,如何恰当地使用它们的成员函数等操作.本文中还讨论了条件函数和函数指针在迭代算法中使用,如在remove_if()和for_each()中的使用.通 ...

  5. PHP命名空间理解

    这玩意就是路径! 这玩意就是路径! 这玩意就是路径! 这玩意就是路径! 这玩意就是路径! use 就是声明要用某个路径的文件(类) 再有namespace的情况下,就类似于已经在一个路径里了 这个时候 ...

  6. Js 网页版扫雷游戏代码实现

    这个游戏是自己在大约一年前联系js熟练度时做的,用的都是基础的东西,最近比较忙没时间整理.直接发给大家,有兴趣的可以看一下.欢迎大家提出建议.如果你有什么新的想法也可以提出来,或者你并不擅长编程.你想 ...

  7. 使用jquery的load方法设计动态加载,并解决浏览器前进、后退、刷新等问题

    继上一篇 使用jquery的load方法设计动态加载,并解决被加载页面JavaScript失效问题 解决了后台业务系统的部分动态加载问题,然而该框架离正常的用户体验还存在一些问题,如:浏览器的前进.后 ...

  8. Oracle数据库时间类型悬疑案

    这次遇到的问题小Alan其实一年半前做证券行业项目就已经遇到过,但是一直没有去思考是什么原因导致的这样的悬疑案,悬疑案是什么呢?其实很简单,我想有不少童鞋都有用到Oracle数据库,情形是这样子的,这 ...

  9. javascript中的apply,call,bind详解

    apply.call 在 javascript 中,call 和 apply 都是为了改变某个函数运行时的上下文(context)而存在的,换句话说,就是为了改变函数体内部 this 的指向. Jav ...

  10. Docker - 手动迁移镜像

    在没有Docker Registry时,可以通过docker save和docker load命令完成镜像迁移的过程,先将镜像保存为压缩包,然后在其他位置再加载压缩包. 将镜像保存为压缩包文件 [ro ...