有很多子类调用重写父方法的例子,最常见的是parent::__construct()
。但是,在这些情况下,您实际上是通过子项本身的具体方法调用父项。
有没有办法可以使用继承方法递归调用从子项到第一个祖先的方法?
如果我在我的抽象父类中使用parent::methodName()
,则会导致致命错误,说“当前类范围没有父级时,无法访问父::”。大概这是因为“父”是相对于抽象类本身进行评估的,而不是当前的类上下文。
...谢谢
答案 0 :(得分:1)
我不太确定你要做什么,但是:
parent
关键字是相对于它出现的类进行评估的。如果您使用parent
关键字的类没有父级,则显然不起作用。final
强制父方法成为“最后一个字”,孩子将无法覆盖它。实际上,这意味着:
extend
其他课程,则在其中的任何位置使用parent
都没有意义。extend
一个类而没有覆盖一个方法,那么将自动使用父方法(它是继承的)。extend
一个类并且正在覆盖一个方法,你可以从被覆盖的方法调用parent
的方法,而可以调用它parent
的方法等。答案 1 :(得分:0)
也许是这样的? (另)
foreach (get_class_parents($this) as $className) {
(new ReflectionMethod($className, __METHOD__))->invoke($this, $args...);
}
我讨厌在代码中看到这种垃圾。