CI(CodeIgniter)框架
CI是什么?
CodeIgnitert是一个轻量级但功能强大的PHP框架
SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。基于MVC设计模式,提供了一套丰富的类库
简单易学,高效实用
官方网站
www.codeigniter.com
中文网站
http://codeigniter.org.cn
特点
你想要一个小巧的框架
你需要出色的性能
你需要广泛兼容标准主机上的各种PHP版本和配置
CI 2.1.4 需要 php5.1.6
你想要一个几乎只需0配置的框架
你想要一个不需使用命令行的框架
你想要一个不许坚守限制性编码规则的框架
你不希望被迫学习一门模板语言(虽然可以选你你喜欢的模板解析器)
你不喜欢复杂,热爱简单
你需要清晰完整的文档
目录结构说明
license.txt 许可协议
user_guide 用户手册
system 框架核心文件
application 应用目录
index.php 入口文件
-----------------------------------------------
MVC
1.入口文件
唯一 一个让浏览器直接请求的脚本
2.控制器
协调模型和视图
3.模型
提供数据,保存数据
4.视图
只负责显示
表单。。。
5.动作action
是控制器中方法,用于被浏览器直接请求
CI中的MVC
访问url使用的是pathinfo(入口文件.php/控制器/动作)
application目录中:
controllers 控制器
models 模型
views 视图
默认控制器是welcome,默认动作是welcome
控制器
1.不需要加后缀,直接是类名+.php
2.文件名全部小写,例如user.php
3.所有的控制器,直接或间接继承CI_Controller类
4.控制器中,对动作(方法)要求,否则将不能被浏览器请求
不能以下划线开头,应该是public的
5.与类名相同的方法,会被当做构造方法,相当于__construct(){}
视图
1.在控制器中如何加载视图
//直接写视图名字,不屑扩展名,如果有子目录,则写上目录名
$this->load->view(视图);(可以多次调用)
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(n) 用于获取url中的第n个参数
入口文件.php/控制器/动作/参数1/参数2
echo $this->segment(3);//值1 echo $this->segment(4);//值2 //index.php/控制器/index/6 public function index($p){ 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来访问超级对象中的一些属性
数据库访问
修改配置文件application/config//database.php
//将数据库访问对象,装载到超级对象的属性中 $this->db $this->load->database(); $res = $this->db->query($sql);//返回对象 $res->resulr();//返回数组,数组中是一个一个的对象 $res->result_array();//返回二维数组,里面是关联数组 $res->row();//返回第一条数据,直接是一个对象
参数绑定
$sql = "select * from blog_user where name=?"; $this->db->query($sql,$name);//如果有多个问号时,需要传入一个索引数组 //表前缀 //目录 application/config/database.php $db['default']['dbprefix'] = 'blog_'; $db['default']['swap_pre'] = 'blog_'; //配置为一样,直接硬编码表前缀就行了,如果以后项目数据库表前缀发生变化,只需要修改$db['default']['dbprefix'] = 'new_';代码中的blog_会自动替换为new_
db的自动加载
//目录 application/config/autoload.php $autoload['libraries'] = array('database'); //不需要:$this->load->database();
