考虑以下课程A
:
public class A
{
//...
}
以及以下代码段:
$a = new A();
$value = $a->getFooValue();
正如您所看到getFooValue
上没有定义A
,我想截取函数 key (在此cas foo
中)然后处理它有一些自定义逻辑。
我正在尝试执行与laravel mutators类似的操作,例如我可以使用名为getFooAttribute
的方法,Laravel将使用 HasAttribute 特征来处理它
例如,如果我调用getFooAttribute
laravel将处理它,并了解foo
然后将执行一些检查以查找是否存在属性或mutator。
非常感谢任何参考或想法,谢谢!
答案 0 :(得分:2)
您可以通过实施神奇的 __ 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";
}