0

コンストラクターに渡されるすべての変数の名前と同じ値を持つクラスにプロパティを作成したいと考えています。

私は文字列でそれを行うことができました:

class test {

    public function __construct() {
        $args = func_get_args();
        foreach($args as $arg) {
            $this->{$arg} = $arg;
            $this->init();
        }
    }

    public function init() {
        echo $this->one;
    }
}

// Output: "one"
$obj  = new test("one");

しかし、変数でそれを行う方法がわかりません。私はこれを試しました:

class test {

    public function __construct() {
        $args = func_get_args();
        foreach($args as $arg) {
            $this->{$arg} = $arg;
            $this->init();
        }
    }

    public function init() {
        echo $this->one;
    }
}

$one  = "one!";
$obj  = new test($one);

出力:

Notice: Undefined property: test::$one on line 13

私が出力したかったもの:

one!
4

2 に答える 2

0

試す:

public function init() {
   echo $this->{'one!'};
}
于 2014-02-23T17:33:46.467 に答える