控制器

1.访问控制器
控制器访问支持queryStrng和pathInfo两种模式。下面是个例子:

这里假定控制器文件配置后缀是.php,方法前缀是do,方法名首字母大写不包含前缀。

QueryString模式:http://127.0.0.1/index.php?home.welcome.index/1/2&uid=333
说明:
1.这个地址是访问控制器目录下面的home文件夹里面的welcome.php里面的Welcome类的doIndex 方法
2.同时向doIndex方法传递了两个参数,第一个是1和第二个是2。
3.还传递了一个get变量uid,可以通过$this->input->get('uid')获取333。
PathInfo模式:http://127.0.0.1/index.php/home.welcome.index/1/2?uid=333
说明:
1.这个地址是访问控制器目录下面的home文件夹里面的welcome.php里面的 doIndex 方法
2.同时向doIndex方法传递了两个参数,第一个是1和第二个是2。
3.还传递了一个get变量uid,可以通过$this->input->get('uid')获取333。

    可以看出两个模式的区别就是index.php后面一个是?一个是/,get方式传递和普通get方式一样。
2.代码规范

控制器类必须继承MpController类,控制器文件名和类名一样,类名首字母大写,而且如果有构造方法那么构造方法里面必须先调用父类的构造方法。
示例如下:

class Welcome extends MpController{
   public function __construct() {
       parent::__construct();
   }
   public function doIndex($name=''){
      $this->view("welcome",array('msg'=>$name));
   }
   public function __output($html){
      echo '__output'.$html;
   }
}
3.输出控制

如果控制器里面有个public function __output($html)方法,那么该控制器所有的输出都会重定向到这个方法上,这个方法会被调用,参数是将要显示到浏览器的页面内容。在这个方法里面可以在输出之前进一步处理内容,该方法决定了内容是否显示到浏览器。

4.和控制器相关的配置

1.存放控制器文件的文件夹路径名称
$system['controller_folder'] = $system['application_folder'] . '/controllers';

2. 默认控制器

$system['default_controller'] = 'welcome';

3.控制器方法名称前缀

$system['controller_method_prefix'] = 'do';

4. 默认方法名称,不要带前缀

$system['default_controller_method'] = 'index';

5.控制器文件名称后缀,比如.php或者.controller.php

$system['controller_file_subfix'] = '.php';