我得到2个php文件 a.php只会
<?php
class A extends B {}
class B{}
php a.php
&gt;&gt;&gt;没有错误
b.php
<?php
class A extends B {}
class B extends C {}
class C{}
php b.php
&gt;&gt;&gt;&gt; Fatal error: Class 'B' not found in b.php on line 2
必须在使用类之前定义类!如果你想要上课 Named_Cart扩展类Cart,你将不得不定义类 购物车第一。如果要创建另一个名为的类 Yellow_named_cart基于您必须定义的Named_Cart类 首先命名为_Cart。简而言之:类的顺序 定义很重要。
所以anyboy请解释为什么a.php没有“致命错误”。
答案 0 :(得分:2)
根据PHP Inheritence doc。
除非使用自动加载,否则必须在它们之前定义类 使用。如果一个类扩展另一个类,那么父类必须是 在子类结构之前声明。此规则适用于 继承其他类和接口的类。
此示例对B类和D类没有依赖关系:
<?php
//This will work
class A extends B {} //searches for class B in current document
class B {}
class C extends D{}
class D{}
B类依赖于C类
<?php
//This will not work
class A extends B {} //searches for class B in current document but class B has dependencies
class B extends C {}
class C{}
对于includes和require,必须在使用该文件中声明的函数/类之前包含该文件。
另见autoloading。