关于CI中的MVC以及扩展CI中的控制器
MVC是一种设计模式模式,M(模型)—V(视图)—C(控制器);
MVC的核心思想是强制开发者在进行项目开发时,将数据的输入,处理,输出分开编写;
1.入口文件:该文件是唯一一个给浏览器直接请求的脚本文件;通常是以index.php 命名;
2.控制器:负责协调模型和视图,以及一些验证权限等;controller;
3.模型:提供数据,保存数据,数据有效性验证;model;
4.视图:负责显示以及表单的数据收集;view;
5.动作(方法):控制器中的公开方法,用于被浏览器请求;action;
CI中的MVC:
访问URL使用的是pathinfo模式;访问规则:http://主机名/入口文件/控制器/动作(方法)
application目录中:
controllers 控制器;
models 模型;
views 视图;
CI中默认控制器是welcome控制器;默认方法是index方法;
控制器:
1.不需要加后缀;
2.文件名全部小写;
3.所有控制器需要直接或间接继承CI_Cortroller类,所有CI所提供的类都以CI_开头;
4.控制器中对动作(方法)的要求:只有public才能被浏览器直接访问,方法名不能以_开头;
模型:
1.写模型一定要继承CI_Model;
2.文件名全小写,类名首字母大写,建议使用_model做后缀,防止与控制器类名冲突;
3.控制器调用模型应在控制器中加载模型 $this -> load -> model( ' 模型名 ' );加载完之后作为一个超级对象使用;
4.$this -> 模型名 -> 方法();调用模型获取数据;
视图:
1.在控制器中加载视图: $this -> load -> view( ‘ 视图名 ’ );如有子目录则 view( ‘ 目录名/视图名 ’ );
2.在视图中可以直接使用PHP的原生代码;
3.推荐使用< ?php foreach($list as $item) : ?> <?=$item[ ' ' ]?> <?php endforeach; ?> 短标签;
一整套MVC开发模式应该是使用控制器(controller)调用模型(model)方法获取数据再将数据返回给视图(view);
如何扩展CI中的控制器,在CI主目录的application/core文件夹下自定义一个MY_Controller控制器类来继承CI_Controller控制器类,在项目中写控制器时直接继承自定义的MY_Controller控制器类就可以得到MY_Controller控制器类和CI_Controller控制器类中的方法;通常MY_Controller控制器类可以写一些自己的方法(登陆验证,权限验证等);如果不想用 MY_ 的默认前缀也可以在 application/config/config.php 文件中配置 $config[ ' subclass_prefix ' ] = ' MY_ ' ; 当中修改;