我有一个带有我想要调用的方法的抽象类:
abstract class KLASS
{
protected function pr()
{
return 'pr()';
}
}
因为我什至无法实例化它,所以我在其上创建了一个图层:
class KLASS2 extends KLASS
{
}
所以:
$a = new KLASS2();
runkit_method_rename ('KLASS', 'pr', 'pr_old');
runkit_method_add ('KLASS', 'pr', '', 'var_dump (method_exists($this, "pr")); var_dump (method_exists($this, "pr_old")); return $this->pr_old();', RUNKIT_ACC_PUBLIC);
echo $a->pr();
那我在做什么?我将旧pr()
函数重命名为pr_old()
并添加一个pr()
具有公共访问权限的新函数。这个新pr()
的调用旧的pr()
例程,这会导致 apache 崩溃。请不要告诉我只编辑课程,我必须保持所有课程不变。
最有趣的部分是,如果pr()
是private,一切都很好!