0

OK、これはかなり長い間私の個人的なバグベアでした。クラスがあるとしましょう。

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}

「Heythere」を喜んで印刷しますか?

4

1 に答える 1

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

Demo: http://codepad.org/64iCiWn2

But you gonna get big trouble if $one->class() is function - it may be confusing, but same thing will happen if if $two_class become function

于 2012-08-28T13:20:00.637 に答える