CI:CodeIgniter -- 由Ellislab公司的CEORickEllis开发,是一个简单快速的PHP MVC框架。
=============下载和安装================
地址:http://codeigniter.org.cn/download
版本:目前的稳定版本为3.X
在线手册:http://codeigniter.org.cn/user_guide/general/welcome.html
=============目录结构==================
|-application:应用文件夹
|- config:配置文件
|- cache:缓存文件
|- MVC:...
|- helpers:辅助函数
|- libraries:类库
|-...
|
|-system:系统文件夹
|-user_guide:用户手册(可以删除)
|-index.php:CI的入口文件
* 唯一一个让浏览器直接请求的文件
* 在入口文件中定义开发环境
* 定义项目目录,视图目录等信息
* 加载框架的入口文件
============默认路由===================
路由:一个指定访问路径的字符串
* 所有请求都是通过入口文件开始,通过URL传递过来的信息去找到对应的控制器和操作,再由控制器去找到对应的视图文件(MVC)
* 默认路由是在appliction/config/routes.php中
* 默认指向的控制器是Welcome
* default_controller:默认控制器
404_override:当发生404错误时的操作
translate_uri_dashes:是否解析-为_
============控制器===================
Controller的建立:
1 找到application/controllers,新建自己的controller页面(.php后缀)
2 类名同文件名,类名首字母大写
3 继承CI_Controller,确保你的控制器扩展自父控制器类
4 保留字的问题(手册-常规主题-保留名称)
5 如果重写构造方法,一定要调用父类的构造方法(parent::__construct())
* 访问的时候url地址不分大小写,index()方法默认加载
============配置文件=================
CI的配置文件:application/config目录下
autoload.php:自动加载配置信息
config.php:项目配置文件
constants.php:项目中的常量
database.php:数据库配置信息
doctypes.php:文档类型对应的头部信息
foreign_chars:外国文字对应
hooks.php:钩子配置
memcached:memcached的配置信息
migration.php:文件对应的http类型
routes.php:路由配置文件
smileys.php:特殊字符对应的图片
user_agents.php:用户的浏览器对应的系统
profiler.php:程序分析的配置
-----
* CI在项目运行时会自动加载config.php,在代码中可以使用config_item()函数获取配置
* CI中提供了config类来获取配置信息:$this->config->item("配置信息")
* 可以在代码中动态设置配置信息:$this->config->item("配置项","值")
=======URL路由规则和自定义路由========
CI中URL的处理(pathinfo):
http://localhost/work/index.php/控制器名/方法名/参数1/参数2....
默认控制器:welcome
默认方法:index
*修改默认控制器:application-config-routes.php(路由管理文件)
-----
自定义URI -- 在配置文件中指定自定义路由
1.在routes.php中添加规则
例:$route["welcome/25"] = "welcome/index/25" -- url访问时:IP/工程名/index.php/welcome/25
** 键所对应的URI才是真正需要访问的路径
2.使用通配符进行值匹配 -- :num 用于匹配所有数字
-- :any 用于匹配任意字符
例:$route["welcome/(:num)"] = "welcome/index/$1";
3.使用正则表达式:
例:$route["welcome/(\d+)"] = "welcome/index/$1"
4.URI中使用回调函数:
$route["welcome/index/(\d+)"] = function($id){
return "welcome/index/".$id;
}
=================URL辅助函数========================================
1.要使用URL的辅助函数,需要先加载URL帮助类:$this->load->helper("url");
2.常用函数:site_url(路由):生成url地址,通过指定的路由和配置信息
base_url():生成URL地址
current_url():返回当前完整URL
uri_string():返回URI分段内容(路由)
除了每个方法中单独配置,可以设置自动加载:
application/config/autoload.php
去搜索键为helper的数组配置,把帮助函数写到数组值中即可
=================视图======================
* CI默认使用php文件来作为视图文件
* 在application/views目录下创建视图文件,可以创建子目录
载入视图:
加载视图:$this->load->view("页面名")
注意:
1 视图是php文件则页面名直接写,可以不用带后缀,会自动补全.php
2 视图是html,就必须把后缀带上
3 同一个方法中可以执行多次该语句,会依次将视图文件载入
注意:如果同一个控制器加载了多个视图,变量只需要赋值一次,其他模板都可以进行使用
4 view方法后面可以跟第二个参数,即分配的变量(数组)
例:$data = array("name"=>"lily")
$this->load->view("test.php",$data)
视图文件中:<?php echo $name;?> -- 直接使用数组的索引作为变量名进行使用
注意:CI的视图文件中,支持变量名简写输出:<?=$name ?>
变量分配:$this->load->vars(变量)
-----视图中的流程控制-----
if(){..} --> if(): ... endif;
foreach(): ... endforeach;
=================模型======================
模型层:
1.在application/models下创建类文件,并继承CI_Model
2 控制器中调用模型层:
1)加载模型层:$this->load->model("User");//User类加载到控制器层中
$this->load->model("User","u");//在上面加载的基础上再进行模型层的取别名的操作,别名:u
* 加载模型后,模型会成为超级对象的属性
* 如果你的模型层包含子目录,那么在加载模型的时候,必须写明目录结构,例如:
$this->load->model("test/User");
2)调用模型层的方法:
没有取别名:$this->User->模型层中的方法()
取别名(可以使用别名作为$this的属性,再调用方法):$this->u->模型层中的方法()
-----自动加载模型-----
如果程序中有很多地方需要使用到模型,那么可以在config/autoload.php中配置模型为自动加载
$autoload["model"] = array("User");
=====================输入类==============================
form:
action:
site_url("控制器/方法")--http://localhost/work/index.php/控制器/方法
获取值:
post:$this->input->post("前台的控件的Name");
get:$this->input->get("前台的控件的Name");
cookie:$this->input->cookie("cookie的名字");