【发布时间】:2020-01-14 06:42:31
【问题描述】:
我有一个 PHP 普通数组,我需要将其转换为它的原始实体。示例:
class Contact
{
protected $name;
getName(){}
setName(){}
}
这通过 API 来回发送,并且在某些时候我将该联系人作为数组元素:
$example = ['name'=>'Foo Bar'];
我希望将其作为 Contact 课程返回。目前,我可以通过序列化/反序列化来做到这一点,但我希望有一种更有效的方法:
foreach($examples as $example) {
$temp = $this->serializer->serialize($example, 'json');
$contact = $this->serializer->deserialize($temp, Contact::class, 'json');
}
这可行,$contact 现在是Contact 的实例。但我必须一次性对 100 个项目执行此操作,可能更多。
我正在考虑创建一个 toObject() 方法,它通过键分配值,但这似乎并没有好多少。
有没有办法在不编写我自己的逻辑或执行额外的序列化步骤的情况下完成此任务?
请注意:我得到了数据数组,我无法得到“原始”json。请按原样处理。
【问题讨论】:
-
数组到底是从哪里来的?您说数据是通过 api 传输的,这意味着它已经序列化。无论如何,我从数据库查询中获取数组数据,然后通常使用 fromArray 类型的方法来填充实体。
-
还有更多参数发送,比如订单的 ID 和安全性的哈希值。这一切都是 json_decoded,所以我把它作为数组。不管它是如何到达那里的,这就是我必须使用的:)
标签: php symfony serialization normalization