不,我不害怕。
如果你希望實現'post-execution hook'風格功能,你可以設計你的類來實現__call()魔術方法。例如:
<?php
abstract class AbstractTest
{
protected function myMethod()
{
echo 'Bar';
}
}
class Test extends AbstractTest
{
public function __call($methodName, $args)
{
call_user_func_array(array($this, $methodName), $args);
call_user_func_array(array('parent', $methodName), $args);
}
protected function myMethod()
{
echo 'Foo';
}
}
$test = new Test();
// Will output 'FooBar'
$test->myMethod();
通過聲明myMethod()受到保護,您不能公開調用它。因此,它被__call()方法'攔截',該方法在它自己的上下文中調用它,然後調用它的父代。這可能需要重新設計你的類是如何構建的。
這是一個非常簡潔的方法:) –