空操作处理

空操作的本质意思:一个对象(控制器)调用本身不存在的方法

在OOP里边,对象调用本身不存在的方法,处于用户体验比较好的角度考虑,

我们可以在类里边制作一个魔术方法:function __call();


避免该方法被重复在各个控制器中书写,可以把该访问放到父类里边

function __call($m,$arg){}


普通控制器父类的位置:

use Think\Controller;
class IndexController extends Controller {

/**
 * 魔术方法 有不存在的操作的时候执行
 * @access public
 * @param string $method 方法名
 * @param array $args 参数
 * @return mixed
 */
public function __call($method,$args) {
    if( 0 === strcasecmp($method,ACTION_NAME.C('ACTION_SUFFIX'))) {
        if(method_exists($this,'_empty')) {
            // 如果定义了_empty操作 则调用
            $this->_empty($method,$args);
        }elseif(file_exists_case($this->view->parseTemplate())){
            // 检查是否存在默认模版 如果有直接输出模版
            $this->display();
        }else{
            E(L('_ERROR_ACTION_').':'.ACTION_NAME);
        }
    }else{
        E(__CLASS__.':'.$method.L('_METHOD_NOT_EXIST_'));
        return;
    }
}

空操作有两种解决方案:

1,在对应的控制器里边制作一个方法,名称为"_empty",这个控制器的空操作都会自动执行该方法。(推荐使用)

2,给空操作的名称制作一个同名得模板出来,系统会自动调用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值