3

我得到2个php文件a.php

<?php
class A extends B {}
class B{}

php a.php
>>>没有错误

b.php

<?php
class A extends B {}
class B extends C {}
class C{}

php b.php
>>>>Fatal error: Class 'B' not found in b.php on line 2

根据[php.net 手册]

类必须在使用前定义!如果您希望 Named_Cart 类扩展 Cart 类,则必须首先定义 Cart 类。如果要基于 Named_Cart 类创建另一个名为 Yellow_named_cart 的类,则必须先定义 Named_Cart。简而言之:定义类的顺序很重要。

所以anyboy请解释为什么a.php没有“致命错误”。

4

1 回答 1

2

根据 PHP继承文档。

除非使用自动加载,否则必须在使用类之前定义类。如果一个类扩展了另一个类,则必须在子类结构之前声明父类。此规则适用于继承其他类和接口的类。

此示例对 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{}

对于包含和要求,您必须先包含该文件,然后才能在该文件中使用声明的函数/类。

另请参阅自动加载

于 2013-08-27T07:23:41.577 回答