PHP提取到类变量中

时间:2013-09-23 22:45:37

标签: php

我正在使用PHP 5.3和extract()函数。

以下是我正在构建的类的一个简单示例:

private api_username;
private api_password;
private api_signature;
private version = '63.0';

public function __construct($credentials) {
    extract($credentials);

    $this->api_username = $api_username;
}

问题是在提取之后,我必须逐个通过变量并将它们分配给类变量。

有没有办法直接提取到类变量,所以我不必逐项分配?

3 个答案:

答案 0 :(得分:12)

如果$credentials数组的键与私有变量的名称完全匹配,则可以使用variable variables来完成此操作(将键作为变量)。

public function __construct($credentials) {
    foreach($credentials as $key => $value) {
        $this->$key = $value;
    }
}

但是,请确保传入的数组具有正确的键。

答案 1 :(得分:0)

这可能不安全,而且你使用的方法与大多数公认的模型不符,但是:

foreach ( $credentials as $key => $value ) {
    if ( property_exists($this,$key) ) {
        $this->$key = $value;
    }
}

答案 2 :(得分:0)

你可以试试这个:

extract($credentials, EXTR_REFS);
foreach ($credentials as $key => $value) {
      $this->$key = $$key;
}