网站制作学习网PHP→正文:控制器controllers-CI(codeigniter)PHP框架
字体:

控制器controllers-CI(codeigniter)PHP框架

PHP 2012/5/24 9:33:07  点击:不统计

<网f站o学a习s制p作.cn>

前面文章整体说了一下Codeigniter的访问,其中涉及到route,URL路由设置,下面对CI控制器,在codeigniter里就是一个类文件,用来处理url过来的需求,在mvc架构中controllers主要控调用模型和视图去完成用户的需求,不做任何输出和数据处理。数据处理和输出则是要model层进行操作。

在CI中,控制器是一个类文件,存放在application/controllers目录下,命名根据类名进行命名URL请求控制器: www.forasp.cn/index.php/控制器名(类名)/方法名(如果没有方法则调用index方法)

一调用类名,比如URL请求为www.forasp.cn/index.php/pages/则会调用对应的pages的controllers
<?php
class Pages extends CI_Controller {
function __construct() {
  parent::__construct(); 

public function index() {
  echo 'pages!';
 }
}
//这里不应有输出
当前为了观看方便,则进行的输出操作
?>
将上面文件保存为pages.php保存在控制器的文件夹中即可。
要求:
1.必须继承CI主控制类
2.类名首字母必须大写。

二 URL请求控制器方法www.forasp.cn/index.php/pages/view
这样的url则会调用pages类下的view方法
<?php
class Pages extends CI_Controller {
 function __construct()
 {  
 parent::__construct(); 
 } 
public function index() {
  echo 'pages!';
 }
}
public function view(){
 echo "调用pages里面的view方法";
 }
}
?>
三URL请求控制器方法并传递参数www.forasp.cn/index.php/pages/show/canshu1/canshu2/canshu3
<?php
class Pages extends CI_Controller {
 function __construct()
 { 
 parent::__construct(); 
 }

 fublic function index() {
  echo 'pages!';
 }
}
public function show($c1,$c2,$c3){
 echo "参数1".$c1;
 echo "参数2".$c2;
 echo "参数3".$c3;
 }
}
?>
 
四 URL请求控制器,在控制器里面创建文件夹。控制器里面创建对应的文件夹,则也要再路由application/config/route.php中设置对应的请求控制器的文件夹,仍然拿 上面的pages类为例。
在application/controllers/里面创建了一个wj文件夹,在路由route.php设置如下
$route['wj/pages'] = 'wj/pages';

当URL请求为www.forasp.cn/index.php/wj/pages/show
则会调用 controllers里面的文件夹wj下面的pages类,并调用的是show方法。

五 在类中重定义控制器路由调用方法,CI控制器提供了一个方法_remap(),如果你在你的URL请求中请求了带实际方法,则不会去调用而是默认的通过_remap()进行判断调用,不会直接调用你请求的方法。
举例:在pages定义类中的_remap如下
function _remap($method,$params = array()){
  echo $method;//这里是临时输出调用的方法名
  var_dump($params);//获取后面的URL调用参数
   $this->$method(); //调用对应的当前类中的方法
}
请求url为 http://www.forasp.cn/index.php/wj/pages/view/can1/can2
在会调用 _remap输出方法名为view 输出的两个参数为 can1 和can2
然后调用pages类中的view方法
这里需要补充一下的是 $method 是必须参数,$params 不是必须参数

六 其他两个私有方法 和 处理输出 不是很理解,暂时就不在此做介绍了


%77w%77%2E%66%6F%72%61%73%70%2E%63%6E

·上一篇:URL路由设置-CI(codeigniter)PHP框架再探 >>    ·下一篇:视图View-CI(codeigniter)PHP框架 >>
推荐文章
最新文章