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

不,不可能以任何理智的方式获取在被调用者内部调用代码时使用的变量的名称。最明智的方法是使用new test(compact('one')),它在内部为您提供了一个常规的键值数组test::__construct,您可以循环访问该数组。

http://php.net/compact

于 2014-02-23T18:46:26.650 回答
0

尝试:

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