我正在使用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;
}
问题是在提取之后,我必须逐个通过变量并将它们分配给类变量。
有没有办法直接提取到类变量,所以我不必逐项分配?
答案 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;
}