class A extends B {}
class B extends C{}
class C {}
结果
PHP Fatal error: class 'B' not found ...
如果订单是这样的
class A extends B {}
class C {}
class B extends C{}
一切都很好。
PS:如果我删除C类{}
class A extends B {}
class B extends C{}
php告诉我找不到'B'班,为什么?
php version 5.3.4
答案 0 :(得分:5)
PHP manual明确提到:
必须在它们之前定义类 用的!如果你想要上课 Named_Cart扩展类Cart, 你必须定义类Cart 第一。如果你想创造另一个 类名为Yellow_named_cart 在你必须的Named_Cart类 首先定义Named_Cart。为了做到这一点 简短:类的顺序 定义很重要。
答案 1 :(得分:2)
显然是一个解析器错误
这是有效的
class A extends B {}
class B {}
这不是
class C extends D {}
class D extends E {}
class E {}
考虑报告bugs.php.net
答案 2 :(得分:0)
类定义在PHP定义中很重要。
Does the order of class definition matter in PHP?
这就是为什么你没有在你定义的类之后定义的类的可见性(在这种情况下class A
看不到class B
,因为它是在之后定义的。)
答案 3 :(得分:0)
因为php是解释而不是编译的,所以声明的顺序必须是有效的。在这个例子中,A不存在B类扩展。
答案 4 :(得分:0)
在尝试扩展它时,{I} {I}}没有定义,因为它发生在class B
之后。它不是一个错误,它是世界运作的方式:你只能使用,存在的东西;)