我有一个数据库模型__get
和__set
功能,可以防止动态创建属性(以防止输入错误):
class UserModel
{
public $Name;
public $LanguageCode; // f.e. "EN", "NL", ...
public function __get($name)
{
throw new Exception("$name is not a member");
}
public function __set($name, $value)
{
throw new Exception("$name is not a member");
}
}
现在,我有一个要传递给模板引擎的UserModel
实例数组( )。$users
因此,我想array_map
在数组上运行并添加一个附加属性LanguageText
,以在模板中使用。
$users = array_map(function ($v)
{
$v = (object)$v; // this doesn't help to cast away from UserModel type
$v->LanguageText = GetLanguageText($v->LanguageCode);
return $v;
}, $users);
// pass $users to templating engine
当然,该行$v->LanguageText = ...
会引发错误,因为我尝试添加动态属性。我试过这个:$v = (object)$v;
将UserModel
对象转换为stdClass
,但类型没有改变。任何想法如何摆脱UserModel
而不必序列化/反序列化数据?
我正在使用 PHP 5.3.5