在 PHP 文档中它说:
类应该在实例化之前定义(在某些情况下这是一个要求)。
有人可以给我一个无法实例化的类的示例,除非它是先前定义的吗?
if (true) {
new Foo;
class Foo { }
}
解析规则与函数相同:如果它们是在文件的“顶层”中定义的,那么它们会在文件解析期间被解析。如果它们是在一段需要运行时评估的代码中定义的,那么类或函数将仅在代码执行时定义,在这种情况下,在它被“执行”之前你不能使用它。
<?php
// Top Level
trait T {
}
$c = new C();
class C {
use T;
}
使用 trait,此代码会出现错误 ( Class 'C' not found in...
)。