【发布时间】:2013-03-03 20:24:16
【问题描述】:
我正在尝试将数组转换为对象。我想使用魔术方法 - 带有静态属性的 __get 和 __set。
我的代码:
class UserData {
private static $id, $name, $login;
public function __get($var)
{
return self::$var;
}
public function __set($var, $val)
{
self::{$var} = $val;
}
}
以及设置:
foreach($userArray as $key => $val)
{
DaneBilingowe::${$key} = $val;
}
错误: 致命错误:无法访问私有属性 UserData::$id
是否可以使用具有静态属性的魔术方法?
【问题讨论】:
-
PHP Manual:
Property overloading only works in object context. (...) will not be triggered in static context.差不多总结了。 -
@Alvin 如果你有它的对象上下文,你可以访问静态上下文。这是废话,但可能。看我的回答。
-
"
DaneBilingowe::${$key} = $val;" - 你真的为每个用户创建了一个子类吗?这就是实例的用途。$daneBillingowe = new UserData('Dane Billingowe');- 问题解决了吗?