PHP 5.3动态实例化一个类,不需要先设置变量


PHP 5.3 Dynamically instantiating a class without setting a variable first

好吧,这已经是我个人困扰了很长一段时间了。说我有课。

class One {
    public $class = 'Two';
    public $member = 'member';
}
class Two {
    public $member = 'Hey there';
    function __construct() {
        print 'Created';
    }
}
$one = new One();
// case 1: works
$two_class = $one->class;
$two = new $two_class();
// case 2: fails
$two = new {$one->class}();

有没有任何方法可以从类模因实例化一个类,而无需首先将名称分配给变量?每次我想从属性动态创建一个类时,我都会有点死,而且我必须首先填充一个变量。有人能向我解释一下为什么在以下情况下不起作用吗:

print $two->{$one->method}

会高兴地印上"嘿"吗?

$two = new $one->class();

演示:http://codepad.org/64iCiWn2

但是,如果$one->class()是函数,你会遇到大麻烦——这可能会令人困惑,但如果$two_class变成函数

,同样的事情也会发生
相关文章: