php空控制器,thinkphp控制器(六) : 空操作及空控制器

空操作

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

下面我们用空操作功能来实现一个城市切换的功能。 我们只需要给CityController类定义一个_empty(空操作)方法:<?php

namespace Home\Controller;

use Think\Controller;

class CityController extends Controller{

public function _empty($name){

//把所有城市的操作解析到city方法

$this->city($name);

}

//注意 city方法 本身是 protected 方法

protected function city($name){

//和$name这个城市相关的处理

echo '当前城市' . $name;

}

}

接下来,我们就可以在浏览器里面输入http://serverName/index.php/Home/City/beijing/

http://serverName/index.php/Home/City/shanghai/

http://serverName/index.php/Home/City/shenzhen/

由于City控制器并没有定义beijing、shanghai或者shenzhen操作方法,因此系统会定位到空操作方法 _empty中去解析,_empty方法的参数就是当前URL里面的操作名,因此会看到依次输出的结果是:当前城市:beijing

当前城市:shanghai

当前城市:shenzhen

空控制器

空控制器的概念是指当系统找不到请求的控制器名称的时候,系统会尝试定位空控制器(EmptyController),利用这个机制我们可以用来定制错误页面和进行URL的优化。

我们可以给项目定义一个EmptyController类<?php

namespace Home\Controller;

use Think\Controller;

class EmptyController extends Controller{

public function index(){

//根据当前控制器名来判断要执行那个城市的操作

$cityName = CONTROLLER_NAME;

$this->city($cityName);

}

//注意 city方法 本身是 protected 方法

protected function city($name){

//和$name这个城市相关的处理

echo '当前城市' . $name;

}

}

接下来,我们就可以在浏览器里面输入http://serverName/index.php/Home/beijing/

http://serverName/index.php/Home/shanghai/

http://serverName/index.php/Home/shenzhen/

由于系统并不存在beijing、shanghai或者shenzhen控制器,因此会定位到空控制器(EmptyController)去执行,会看到依次输出的结果是:当前城市:beijing

当前城市:shanghai

当前城市:shenzhen

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值