【发布时间】:2013-10-29 12:17:47
【问题描述】:
在 PHP 文档中它说:
类应该在实例化之前定义(在某些情况下这是一个要求)。
谁能给我一个除非之前定义过才能实例化的类的例子吗?
【问题讨论】:
-
我不知道可以实例化一个未定义的类——除了
stdClass,但这是在 PHP 核心中定义的。但也许这里的意思是未定义类的反序列化,这会给你一个警告和一个不完整的类 (PHP_Incomplete_Class)
在 PHP 文档中它说:
类应该在实例化之前定义(在某些情况下这是一个要求)。
谁能给我一个除非之前定义过才能实例化的类的例子吗?
【问题讨论】:
stdClass,但这是在 PHP 核心中定义的。但也许这里的意思是未定义类的反序列化,这会给你一个警告和一个不完整的类 (PHP_Incomplete_Class)
if (true) {
new Foo;
class Foo { }
}
解析规则与函数相同:如果它们是在文件的“顶层”中定义的,那么它们会在文件解析期间被解析。如果它们是在一段需要运行时评估的代码中定义的,那么类或函数只会在代码执行时定义,在这种情况下,在“执行”之前你不能使用它。
【讨论】:
<?php
// Top Level
trait T {
}
$c = new C();
class C {
use T;
}
使用 trait,此代码会出现错误 (Class 'C' not found in...)。
【讨论】: