我知道在PHP中你可以定义一个类,无论它在文件中的位置如何,你都可以使用该类。例如,看看下面的代码:
<?php
//First case. No errors.
class Second extends First{}
class First{};
//Second case. Still nothing.
abstract class B extends A{};
class C extends B{};
class A{};
//Fatal error!
class C1 extends B1 { };
abstract class B1 extends A1{ };
class A1 { };
?>
P.S;我使用的是PHP 5.6.25,Apache 2.4,CentOS 6.7。
答案 0 :(得分:2)
我无法找到一条书面规则,但看到了这个结果:
<?php
//A1 Exists
echo class_exists("A1")?"A1 Exists<br>":"A1 Not exists<br>";
//B1 Not exists
echo class_exists("B1")?"B1 Exists<br>":"B1 Not exists<br>";
//C1 Not exists
echo class_exists("C1")?"C1 Exists<br>":"C1 Not exists<br>";
class C1 extends B1 {};
class B1 extends A1{ };
class A1 { };
?>
我可以弄清楚解释器可以回顾和转发以查找父类,但是当你链接第三级继承时,它无法预测B1将会存在。
如果你这样做:
<?php
//A1 Exists
echo class_exists("A1")?"A1 Exists<br>":"A1 Not exists<br>";
//B1 Not exists
class B1 extends A1{ };
class A1 { };
?>
它说'好吧,之前我没有看过A1级声明,但我发现它已经超前了#。
答案 1 :(得分:1)
我很遗憾地说,但事实并非如此,即使看起来如此:
我知道在PHP中你可以定义一个类,无论它在文件中的位置如何,你都可以使用该类。
让我们检查documentation
注意:强> 必须在使用之前定义类!如果您希望Named_Cart类扩展Cart类,则必须首先定义类Cart。如果要基于Named_Cart类创建另一个名为Yellow_named_cart的类,则必须首先定义Named_Cart。简而言之:定义类的顺序很重要。