我需要在其他公共方法之前运行一个私有方法,所以我使用了__call
方法,它似乎覆盖默认方法调用,所以它看起来像这样
function __call($method, $arguments)
{
// echo($method);
if (in_array($method, array('changeStatus', 'lockStatus')))
$this->_checkInputData($arguments);
call_user_func($method, $arguments);
}
但我突然发现__call
方法仅适用于非定义方法,所以有没有办法在指定之前调用自定义方法?
答案 0 :(得分:0)
这个问题有点奇怪。要在公开之前调用私有方法,您可以在公共方法示例中调用它
class Example
{
private function methodA()
{
echo 'I am a method A';
}
public function methodB()
{
$this->methodA();
echo 'I am a method B';
}
}
以这种方式在对象上调用methodB时,它首先调用methodA,然后调用方法B的body。
修改强>
你想指定应该调用哪种方法。
class Example
{
private function methodA()
{
echo 'I am a method A';
}
private function methodB()
{
echo 'I am a method B';
}
public function callMethods($method)
{
if($method =='a') $this->methodA();
else if($method =='b') $this->methodA();
//rest of function
}
}
通过这种方式,您可以在
中指定$obj = new Example();
$obj->callMethods('a'); // will call firstly MethodA
$obj->callMethods('b'); // will call firstly MethodB