Php 在Symfony中反序列化对象的索引数组
我需要从YAML文件中反序列化索引的对象数组。问题是symfony认为它是Php 在Symfony中反序列化对象的索引数组,php,symfony,serialization,Php,Symfony,Serialization,我需要从YAML文件中反序列化索引的对象数组。问题是symfony认为它是项中的一组对象,但它是带有索引的数组,并且总是会有不同的名称(索引)。我在文档中找不到答案(很肯定我只是忽略了) 有小费吗 亚马尔: 项目: 黑暗世界: 显示名称:暗声 价格:100 电话: 显示名称:手机 价格:100 映射 $encoders=[new YamlEncoder()]; $normalizers=[ 新的ObjectNormalizer(null,null,null,new ReflectionExtr
项中的一组对象,但它是带有索引的数组,并且总是会有不同的名称(索引)。我在文档中找不到答案(很肯定我只是忽略了)
有小费吗
亚马尔:
项目:
黑暗世界:
显示名称:暗声
价格:100
电话:
显示名称:手机
价格:100
映射
$encoders=[new YamlEncoder()];
$normalizers=[
新的ObjectNormalizer(null,null,null,new ReflectionExtractor()),
];
$serializer=新的序列化程序($normalizers,$encoders);
$test=$serializer->反序列化(文件获取内容(uuu DIR_uu.'/example.yml'),ItemList::class,'yaml');
班级
类项目列表{
/**@var Singleton[]*/
私有数组$items=[];
/**
*@return Singleton[]
*/
公共函数getItems():数组
{
返回$this->items;
}
/**
*@param Singleton[]$items
*@returnitemlist
*/
公共函数setItems($items):self
{
$this->items=$items;
退还$this;
}
}
单件阶级{
私有字符串$display\u name;
私人整数$price=0;
/**
*@返回字符串
*/
公共函数getDisplayName():字符串
{
返回$this->display\u name;
}
/**
*@param string$display\u name
*@returnsingleton
*/
公共函数setDisplayName($display\u name):self
{
$this->display\u name=$display\u name;
退还$this;
}
/**
*@return int
*/
公共函数getPrice():int
{
返回$this->price;
}
/**
*@param int$price
*@returnsingleton
*/
公共函数setPrice(int$price):单例
{
$this->price=$price;
退还$this;
}
}
您可以这样添加到services.yaml文件:
parameters:
items: {
darkvoice: {
display_name: Dark Voice
price: 100
},
phone: {
display_name: Mobile phone
price: 100
}
}
然后,在控制器中,您可以通过添加以下内容来访问参数:
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
在构造函数中自动关联它:
public function __construct(ParameterBagInterface $params)
{
$this->getItems = $params->get('items');
}
不确定这是否会对您有所帮助,或者为您的情况提供一些额外的考虑。如您在顶部看到的,如果您将输出反序列化为一个对象。将YAML解码为数组:)