考虑以下类别A
:
public class A
{
//...
}
以及以下片段:
$a = new A();
$value = $a->getFooValue();
正如您所看到的,getFooValue
没有在A
上定义,我想截取函数键(在本例中为foo
),然后用一些自定义逻辑处理它。
我正在尝试做一些类似于laravel突变体的事情,例如,我可以有一个名为getFooAttribute
的方法,laravel将使用HasAttribute特性来处理它。
例如,如果我调用getFooAttribute
,laravel将处理它,并理解foo
,然后将执行一些检查,以确定是否存在属性或突变子。
任何参考或想法都将不胜感激,谢谢!
您可以通过实现magic__call()方法来拦截对对象未定义方法的调用-请参阅http://php.net/manual/en/language.oop5.overloading.php#object.call了解更多详细信息。
文档示例:
public function __call($name, $arguments)
{
echo "Calling object method '$name' " . implode(', ', $arguments). "n";
}