Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将对象强制转换为stdClass_Php - Fatal编程技术网

Php 将对象强制转换为stdClass

Php 将对象强制转换为stdClass,php,Php,我有一个带有\uuu get和\uu set功能的数据库模型,这些功能可以防止动态创建属性(防止键入错误): 现在,我有了一个UserModel实例数组($users),我希望将其传递给模板引擎。因此,我想在数组上运行array\u map,并添加一个额外的属性LanguageText,以便在模板中使用 $users = array_map(function ($v) { $v = (object)$v; // this doesn't help to cast away from Us

我有一个带有
\uuu get
\uu set
功能的数据库模型,这些功能可以防止动态创建属性(防止键入错误):

现在,我有了一个
UserModel
实例数组(
$users
),我希望将其传递给模板引擎。因此,我想在数组上运行
array\u 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
而不必序列化/取消序列化数据吗


我使用的是PHP5.3.5

您必须执行双重强制转换才能执行您想要的操作

$v = (object)(array)$v;

为什么不将LanguageText属性添加到类定义中呢?因为我已经编写了类似于
.NET实体框架的数据库代码。模型中的每个属性都必须映射到数据库表中的一列。如果您不关心将属性返回到UserModel对象中,请查看我的答案。根据所使用的框架,这可能是视图帮助器的一个很好的用例,因此视图可以解析语言文本,而不必依赖上下文来提供它。
$v = (object)(array)$v;