假设我们有一个类,其中包含多个受保护和/或公共方法。每次调用方法时我需要执行一个检查。我可以在每次调用方法时进行这个检查:
或者
class Object
{
// Methods
}
$o = new Object();
if($mayAccess) $o->someMethod();
或者
if($mayAccess) $this->someMethod();
但我希望开发人员既不需要考虑它,也不需要编写它。我想过使用 __call 来实现这样的功能:
class Object
{
public function __call($methodName, $args)
{
if($mayAccess) call_user_func_array($this->$methodName, $args);
}
}
不幸的是,如果我从类内部调用该方法,则 __call 不会被调用,因为它仅在调用非可见方法时起作用。
有没有一种简洁的方法来隐藏这个检查,无论是内部还是外部调用?目标仍然是确保开发人员在调用方法时不会忘记执行此操作。
提前感谢:)
EDIT :
我有另外一种做法:
class Object
{
public function __call($methodName, $args)
{
if($mayAccess) call_user_func_array($methodName, $args);
}
}
function someMethod() { }
但我将不能再使用$this了,这意味着没有保护方法,而我确实需要。
array($object, $method)
来描述它。 - Alain Tiemblo