Php 我可以使用继承的方法从一个子代到父代递归调用一个方法吗?
有很多子类调用重写的父方法的示例,最常见的是Php 我可以使用继承的方法从一个子代到父代递归调用一个方法吗?,php,Php,有很多子类调用重写的父方法的示例,最常见的是parent::\uu construct()。但是,在这些情况下,实际上是从子对象本身的具体方法调用父对象 有没有一种方法可以使用继承的方法从子代递归调用方法到第一个祖先 如果在抽象父类中使用parent::methodName(),会导致一个致命错误,即“当前类作用域没有父类时无法访问parent::when”。这大概是因为“父”是相对于抽象类本身而不是当前类上下文进行计算的 谢谢…我不太确定您想做什么,但是: 父关键字是相对于它所在的类进行计算的
parent::\uu construct()
。但是,在这些情况下,实际上是从子对象本身的具体方法调用父对象
有没有一种方法可以使用继承的方法从子代递归调用方法到第一个祖先
如果在抽象父类中使用parent::methodName()
,会导致一个致命错误,即“当前类作用域没有父类时无法访问parent::when”。这大概是因为“父”是相对于抽象类本身而不是当前类上下文进行计算的
谢谢…我不太确定您想做什么,但是:
是相对于它所在的类进行计算的。如果在中使用parent
关键字的类没有父类,那么它显然不起作用
extend
ing一个类,并且没有重写一个方法,则将自动使用父方法(它是继承的)扩展一个类并重写一个方法,您可以从被重写的方法调用父类的方法,而被重写的方法又可以调用它的父类的方法等
也许是这样的?(未经测试)
我讨厌在代码中看到这种垃圾 您认为如何调用未实现的方法(抽象)?谢谢@Johntor,您说得对。请参见上面的编辑。
foreach (get_class_parents($this) as $className) {
(new ReflectionMethod($className, __METHOD__))->invoke($this, $args...);
}