如下代码:
class ActivityController extends Controller
{
public function actionDzp() {
$this->checkAccess();
}
public function actionShake() {
$this->checkAccess();
}
public function actionDraw(){
$this->checkAccess();
}
private function checkAccess(){
// some validation code ...
}
ActivityController中有3个需要在被调用前执行权限校验的公开方法,所以我抽取了一个私有的checkAccess供调用.
PHP中有没有办法以无侵入的方式,在所有类的方法成员被调用前执行一段代码?而非像上面这种方式显式地调用了多次$this->checkAccess();
以AOP的方式? 还是PHP面向对象的语法中本身就有支持这种功能的魔术方法?
谢谢!
如果你的框架在支持Controller::__call()方法的话,就可以这么干
actionFoo和actionBar被声明为protected,所以调用的时候就触发__call()
actionBaz是public,就不会触发__call()