在php.net中写道如下: 应该在实例化之前定义类(在某些情况下,这是一个要求)。 任何人都可以在需要时给出一个例子吗?因为它的典型用法并不需要,就像在这个例子中一样正常:
<?php
$class = "a" ;
$ob = new $class() ;
class a
{
var $city = "new york" ;
}
echo $ob->city ;
?>
答案 0 :(得分:3)
这不起作用:
new Foo;
if (true) {
class Foo { }
}
有条件宣布的课程必须先行。基本上,解析器在解析文件时直接处理文件“顶层”的任何内容,这是运行时环境执行代码之前的步骤(包括new Foo
)。但是,如果类声明嵌套在if
之类的语句中,则需要由运行时环境进行评估。即使该语句保证为真,解析器也无法计算if (true)
,因此该类的实际声明将延迟到运行时。在运行时,如果您尝试在new Foo
之前运行class Foo { }
,则会失败。