ci框架学习告一段落,总结一下
从网上弄了一张框架学习思维导图,从图中就可以看出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框架学习告一段落,总结一下的更多相关文章
- 各种demo——CI框架学习
各种demo——CI框架学习 寒假学习一下CI框架,请各位多多指教! 一.CI的HelloWorld! 注意:CI禁止直接通过文件目录来访问控制器. ./application/controlle ...
- PHP,mysql,Linux,CI框架学习总结
PHP,mysql,CI框架学习总结 PHP标记 1.Xml风格<?php ?> 2.简短风格 <? ?> 需在php.ini中开启short_open_tag 3.asp风格 ...
- PHP CI框架学习
CI框架的URL辅助函数使用 URL 辅助函数文件包含一些在处理 URL 中很有用的函数 加载辅助函数 在使用CI框架的使用经常碰到跳转和路径方面的问题,site_url()和base_url()很容 ...
- CI框架学习笔记
打印SQL语句$this->dbRead->last_query(); 重映射方法正如上文所说,URI 的第二段通常决定控制器的哪个方法被调用.CodeIgniter 允许你使用 _rem ...
- CI框架学习——基本的用法(一)
一.必备知识 1.如何访问你的页面 我在控制器下面建立了admin文件夹,此文件夹下有login.php 文件,我们现在要访问这个文件 http://localhost/gradesystem/ind ...
- 【ci框架学习】控制器-视图
基础的东西就不写了,网上大把的教程,可以慢慢磨.这里说些要注意的要点. 1.所有控制器都必须间接或者直接继承控制器基类 CI_Controller. 2.文件命名尽量小写,因为ci使用的是pathin ...
- 【ci框架学习】环境搭建
系统 -- Ubuntu 14.0(虚拟机linux 实体机Windows) 目标环境 -- lnmp 附加内容: 1.目录共享(方便代码编写) 2.使用secure crt终端软件连接(便于操作,不 ...
- PHP CI框架学习笔记-分页实现程序
视图html <div id="body"> <form action="/index.php/search/index/" method= ...
- ci框架学习中注意的事项
视图: 加载视图:$this->load->view('name'); 一次可以加载多个视图,如: public function index() { $data['page_title' ...
随机推荐
- storm kafkaSpout 踩坑问题记录! offset问题!
整合kafka和storm例子网上很多,自行查找 问题描述: kafka是之前早就搭建好的,新建的storm集群要消费kafka的主题,由于kafka中已经记录了很多消息,storm消费时从最开始消费 ...
- xmlplus 组件设计系列之一 - 图标
网页上使用的图标分可为三种:文件图标.字体图标和 SVG 图标.对于文件图标,下面仅以 PNG 格式来说明. PNG 图标 对于 PNG 图标的引用,有两种方式.一种是直接由 HTML 元素 img ...
- 原生ajax实现http请求
1⃣️先简单了解一下HTTP协议: http是计算机通过网络进行通信的一种规则,它是一种无状态协议(不建立持久链接,直白点儿说就是请求响应完事儿之后,链接就断开) 2⃣️一个完整的http请求有 ...
- cmd中关闭windows2008错误弹窗
net stop sharedaccess reg add HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Windows /v ErrorMode / ...
- 经验分享:如何用grep对PHP进行代码审计
这是一个常见的误解- 企业需要购买复杂和昂贵的软件来发现应用程序中安全漏洞:而这些专门的软件应用程序,无论是黑盒或白盒,开源或商业,都能很快的发现安全漏洞. 事实是:所有这些专业的漏洞扫描工具都有其特 ...
- 转 JSON与XML转换
这两天处理模块的联调工作,在json与XML转换中出现了一些奇怪的问题,仔细究来,实为对org.json.*包知之太少.晚上baidu.google一下,找出了问题出现的原因.在模块中,使用了两个方法 ...
- Docker学习总结(一)
<认识Docker> 不定期更新~~~~~~~ 历史区别: 13年之前:网络大多使用"协议栈堆叠"的形式进行开发,需要部署单一专有的服务器进行操作.包括(中间件,运行时 ...
- miller_rabin算法检测生成大素数的RSA算法实现
import math from functools import reduce #用于合并字符 from os import urandom #系统随机的字符 import binascii # ...
- springMVC---简介
SpringMVC介绍 为什么要使用springMVC? 很多应用程序的问题在于处理业务数据和显示业务数据的视图的对象之间存在紧密耦合.通常,更新业务对象的命令都是从视图本身发起的,使视图对任何业务对 ...
- shiro权限控制(一):shiro介绍以及整合SSM框架
shiro安全框架是目前为止作为登录注册最常用的框架,因为它十分的强大简单,提供了认证.授权.加密和会话管理等功能 . shiro能做什么? 认证:验证用户的身份 授权:对用户执行访问控制:判断用户是 ...