控制器[3]

六.空操作

空操作是指系统在找不到请求的操作方法时,会定位到空操作(_empty)方法来执行,利
用这个机制,我们可以实现错误页面和一些 URL 的优化。

在 WeiBo/Home/Controller/UserController.class.php 中的代码 为:

 1 <?php
 2 
 3 namespace Home\Controller;
 4 use Think\Controller;
 5 
 6 class UserController extends Controller {
 7         public function index() {
 8             echo "this is index ";            
 9         }
10 }

这时如果url为: http://localhost/demo39/user/index 则输出为: this is index ,

但如果url为: http://localhost/demo39/user/test 则

这时为了不出现上图,则添加函数  _empty() 

在 WeiBo/Home/Controller/UserController.class.php 添加如下代码:

1 public n function _empty($name) {
2  echo '找不到方法:'.$name;
3 }

这时当url为: http://localhost/demo39/user/test ,则输出为:

 

七. 空控制器

所谓空控制器,就是请求不到指定控制器时,调用一个专门的空控制器。利用这个机制,
我们可以实现错误页面和一些 URL 的优化。

这时在 WeiBo/Home/Controller/Controller 下新建 EmptyController.class.php ,与 IndexController.class.php 同级,

代码为:

1 <?php
2 namespace Home\Controller;
3 use Think\Controller;
4 
5 class EmptyController extends Controller {
6     public function index() {
7         echo "找不到控制器:".CONTROLLER_NAME;
8     }
9 }

这时url为: http://localhost/demo39/test ,输出为: 找不到控制器:Test ,就不会出现出错页面了。

 

八.操作绑定到类

ThinkPHP 提供了把每个操作方法定位到一个类的功能,即每个把层次分的更加细腻。

在 WeiBo/Common/Conf/config.php 中进行配置:

1 //设置操作绑定到类
2 'ACTION_BIND_CLASS'=>

然后,在 Controller 目录下建立 User 目录,在 User 目录建立 index.class.php,
再建立 test.class.php。

1 //index.class.php内代码
2  namespace Home\Controller\User;
3  use Think\Controller;
4  class index  extends Controller {
5  public  function run() {
6  echo 'User模块下的index类';
7     }
8 }
1 //test.class.php内代码
2  namespace Home\Controller\User;
3  use Think\Controller;
4  class test  extends Controller {
5  public  function run() {
6  echo 'User模块下的test类';
7 }
8 }

需要注意的是,在User目录下的 class.php 文件如 index.class.php 中的 index 中的i不要大写,否则会出错(调试了半天才发现是大写首字母I出的错)

且 index.class.php 中的function必须是run() 函数。

这时在 index.class.php 中插入其它代码如下:

1 public  function abc() {
2   echo 'User模块下的abc类';
3  }

是不起作用的。

要对 index.class.php 中的run()函数增加其它功能的话可使用以下函数:

1 //前置后置方法
2  public  function _before_run() {
3  echo 'before_'.ACTION_NAME;
4 }
5  public  function _after_run() {
6 echo 'after_'.ACTION_NAME;
7 }

 

空方法,在User目录里建立一个 _empty.class.php 与 index.class.php 同级

1 <?php
2 namespace Home\Controller\User;
3 use Think\Controller;
4 
5 class _empty extends Controller{
6     public function run() {
7         echo "找不到方法:".ACTION_NAME;
8     }
9 }

 

空控制器,可以创建一个目录 _empty 与 User 目录同级,然后建立  index.class.php 

1 <?php
2 namespace Home\Controller\_empty;
3 use Think\Controller;
4 
5 class _empty extends Controller{
6     public    function run() {
7         echo "找不到该控制器:".CONTROLLER_NAME;
8     } 
9 }

 

posted @ 2015-06-17 16:52  todaytoday  阅读(170)  评论(0编辑  收藏  举报