定义之前的实例化类

时间:2014-01-29 16:21:16

标签: php class instantiation

在php.net中写道如下: 应该在实例化之前定义类(在某些情况下,这是一个要求)。 任何人都可以在需要时给出一个例子吗?因为它的典型用法并不需要,就像在这个例子中一样正常:

<?php
$class = "a" ;
$ob = new $class() ;
class a
{
    var $city = "new york" ;
}
echo $ob->city ;
?>

1 个答案:

答案 0 :(得分:3)

这不起作用:

new Foo;

if (true) {
    class Foo { }
}

有条件宣布的课程必须先行。基本上,解析器在解析文件时直接处理文件“顶层”的任何内容,这是运行时环境执行代码之前的步骤(包括new Foo)。但是,如果类声明嵌套在if之类的语句中,则需要由运行时环境进行评估。即使该语句保证为真,解析器也无法计算if (true),因此该类的实际声明将延迟到运行时。在运行时,如果您尝试在new Foo之前运行class Foo { },则会失败。