Я пытаюсь использовать функцию __call
для выполнения инструкций перед конкретным действием.Функция вызова не работает для всех подклассов
Но когда я использую этот код, я получаю только __call
, но мне нужно его выполнить для каждого звонка run()
.
Если я использую $second_child->run()
внутри run()
первого ребенка только __call
, для первого ребенка, выполняет. Любая идея почему?
class ParentClass{
protected function run(){}
public function __call($method,$arguments) {
echo "<br/>######Call ". get_called_class()."########<br>";
if(method_exists($this, $method)) {
call_user_func_array(array($this,$method),$arguments);
}
}
}
class first_child extends ParentClass{
protected function run(){
echo "<br>running " . get_called_class();
$x= new second_child;
$x->run();
}
}
class second_child extends ParentClass{
protected function run(){
echo "<br>running " . get_called_class();
}
}
$y= new first_child;
$y->run();
Мой вывод вашего скрипта: ###### Вызов first_child ######## работает first_child работает second_child, как 'Run()' 's становятся казнены – Ray
@Ray: Но оба '__call' не являются. –