新手php类继承问题

时间:2009-08-25 14:25:33

标签: php oop inheritance class

我最近遇到了一个php项目的问题,我终于意识到这是我编写类的方式。如果我尝试在页面中包含多个类,并且两个类共享同一个父类,则脚本失败。我现在已经解决了这个问题,但是想知道是否有人可以向我解释为什么我在做什么不起作用,因为我还没有完全了解它! 以下是不起作用的说明:

A级。
B级延伸A.
C级延伸A.
D类延伸B.
E级延伸C.

我需要D类和E类,脚本失败。如果C类没有继承A那么一切正常。 显然,这与要求A级两次有关,但有人可以用非常简单的术语解释它吗?!?!?

3 个答案:

答案 0 :(得分:3)

你们每个班级都有自己的文件吗?

您使用的是require / include而不是require_once / include_once吗? include_once和require_once也不共享相同的包含文件表,所以你必须一致地使用一个。

或者在PHP5中始终使用__autoload函数。

答案 1 :(得分:3)

您可以只声明每个班级一次。如果您需要多次定义类的文件,解析器会遇到class A,进行内部查找和保释:'嘿,您已经定义了该类'。最简单的解决方案是将每个类放入自己的文件中,并调用require_once而不是require

答案 2 :(得分:2)

included文件中定义的任何函数或类都在全局范围内声明。这就是您可能遇到重新声明错误的原因。解决方案是使用require_onceinclude_once代替requireinclude

最优雅的方法是使用__autoload,但这需要PHP 5或更高版本。自动加载的唯一缺点是任何失败都是致命的错误,你无法自己处理。