【发布时间】:2011-05-02 07:28:45
【问题描述】:
我在扩展一个本身进一步扩展抽象类的类时遇到问题。
基础抽象类有以下方法:
摘要:
private final __construct()
abstract protected function loadFromId()
private static final load($id)
类 1 扩展摘要:
protected loadFromId()
2 类扩展 1 类:
//nothing as of yet
我从 Class 2 扩展 Class 1 的原因是因为我需要它返回 Class 1 的一个实例。Class 2 基本上会返回一个 null 对象以进行验证。
如果我尝试扩展第 1 类:
Class 2 extends Class 1 { }
我收到以下错误“Cannot override final method class::__construct()”,显然是因为它是私有方法。
有没有办法可以基于 Class 1 创建一个空对象?
【问题讨论】:
-
如果您实际上在其中一个子类中放置了另一个构造函数(由于
finalkeyword 而显然无法工作),您应该只获得Cannot override final method class::__construct()。否则,你应该得到一个Fatal error: Call to private A::__construct() from invalid context。
标签: php inheritance abstract-class