我正在设置一些具有公共基类的类。在每个类中,我都有一堆函数可以通过__call
方法访问。
class Test
{
private function meth1()
{
}
public function __call($name, $args)
{
call_user_func_array([$this, $name], $args);
return $this;
}
}
由于类中的每个函数大部分只返回$this
进行方法链接,因此我将return $this
放入__call
方法以避免一些冗余。
由于我有一堆扩展TestClass
的类,我决定将__call
方法移动到该基类中。
class BaseTest
{
public function __call($name, $args)
{
call_user_func_array([$this, $name], $args);
return $this;
}
}
class Test extends BaseTest
{
private function meth1()
{
}
}
但是,当我将其移入基类时,我收到Maximum function nesting level of '100' reached, aborting!
错误。
有没有办法在基类中执行此操作,或者每个类是否都有自己的__call
方法?
为什么会出现嵌套错误?
答案 0 :(得分:0)
您收到错误,因为父类中无法访问private
方法。
为什么你想要私密呢?
因此,要使其工作,请将__call
移至扩展类,或制作方法protected
。
顺便问一下,你真的想从$this
返回__call
吗?你确定吗?