Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/264.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 在Symfony中反序列化对象的索引数组_Php_Symfony_Serialization - Fatal编程技术网

Php 在Symfony中反序列化对象的索引数组

Php 在Symfony中反序列化对象的索引数组,php,symfony,serialization,Php,Symfony,Serialization,我需要从YAML文件中反序列化索引的对象数组。问题是symfony认为它是项中的一组对象,但它是带有索引的数组,并且总是会有不同的名称(索引)。我在文档中找不到答案(很肯定我只是忽略了) 有小费吗 亚马尔: 项目: 黑暗世界: 显示名称:暗声 价格:100 电话: 显示名称:手机 价格:100 映射 $encoders=[new YamlEncoder()]; $normalizers=[ 新的ObjectNormalizer(null,null,null,new ReflectionExtr

我需要从YAML文件中反序列化索引的对象数组。问题是symfony认为它是
项中的一组对象,但它是带有索引的数组,并且总是会有不同的名称(索引)。我在文档中找不到答案(很肯定我只是忽略了)

有小费吗

亚马尔:

项目:
黑暗世界:
显示名称:暗声
价格: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解码为数组:)