近几天的开发中,写了一个类,发现几乎每一个方法都需要加一个同样的验证层。如下:
(new OpenidValidate()) -> goCheck();
parent::check($accessToken);
刚开想将验证层代码写到构造函数中,但是报了个不知道啥的错误(Missing parent constructor call)父类中也没有写构造函数。。。所以就没继续往下纠错,然后又写了一个first方法
public function first($accessToken,$openid)
{
(new OpenidValidate()) -> goCheck();
parent::check($accessToken);
}
// 在其他方法中调用此方法
$this->first($accessToken,$openid);
这么些依然不是很简洁。。。
问了下前辈,说是tp3.2版本中有自带的前置方法。就去tp5中找到了前置操作。
发现十分好用啊!!!
这里就不拿我写的代码作为例子了,就拿官方举的例子来详细解释下吧
官方说明链接:当当当!!!`
namespace app\index\controller;
use think\Controller;
class Index extends Controller
{
protected $beforeActionList = [
'first', //执行任何方法之前都会执行这个first
'second' => ['except'=>'hello'], //除了hello方法以外的方法执行之前都会先执行一次second
'three' => ['only'=>'hello,data'], //仅在hello和data方法执行之前执行一次three
];
protected function first()
{
echo 'first<br/>';
}
protected function second()
{
echo 'second<br/>';
}
protected function three()
{
echo 'three<br/>';
}
public function hello()
{
return 'hello';
}
public function data()
{
return 'data';
}
}
/*访问http://localhost/index.php/index/Index/hello最后的输出结果是*/
first
three
hello
/*访问http://localhost/index.php/index/Index/data的输出结果是:*/
first
second
three
data
使用tp框架,就是很方便啊!哈哈哈哈哈哈………………………………………..嗝~