我只需要在PHP.net上添加一个关于抽象类和方法的注释:对象抽象。
我正在研究Cgiapp2,它是Cgiapp的仅PHP5实现,旨在利用PHP5的新对象模型和异常。最初,我决定做的一件事是将其设为抽象类,并将可覆盖的方法也标记为抽象。
在测试中,我开始遇到一些奇怪的错误。基本上,它在我的类扩展中说存在一个抽象方法,因此该类应该标记为抽象,最后,这意味着它不会运行。
奇怪的是扩展中根本不存在该方法。
所以,我覆盖了扩展中的方法……瞧!一切正常。
从中吸取的教训非常简单:如果该方法不需要出现在覆盖类中,则不要将其标记为抽象。仅在以下情况下将方法标记为抽象方法:
- 方法在类实现中是必需的,
- 扩展类应该负责实现该方法
现在我需要更新我的源代码树……:-(