PHP 5.3动态实例化类而不先设置变量

时间:2012-08-28 13:17:08

标签: php oop class

好的,这已经是我个人的臭虫已经有一段时间了。说我上课了。

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}();

有没有办法从类memeber实例化一个类而不首先将名称赋给变量?每次我想从属性动态创建一个类时我都死了一点,我必须首先填充一个变量。任何人都可以在技术上向我解释为什么在以下情况下这不起作用:

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

很乐意打印'嘿那里'?

1 个答案:

答案 0 :(得分:9)

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

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

但如果$one->class()功能正常,你会遇到大麻烦 - 这可能会让人感到困惑,但是如果$two_class成为功能会发生同样的事情