如何创建自定义编码器吗

编辑该页面

如何创建自定义编码器吗

序列化器组件使用标准化者任何数据转换成一个数组。然后,利用编码器,这些数据可以被转换成任何数据结构(例如JSON)。

描述组件提供了一些内置编码器在序列化器组件但是你可能想要使用另一个结构的不支持。

创建一个新的编码器

想象你想YAML进行序列化和反序列化。,你必须创建自己的编码器使用Yaml组件:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17日18 19 20 21日22日23日24日25日26日27 28 29
/ / src /序列化器/ YamlEncoder.php名称空间应用程序\序列化器;使用欧宝娱乐app下载地址\组件\序列化器\编码器\DecoderInterface;使用欧宝娱乐app下载地址\组件\序列化器\编码器\EncoderInterface;使用欧宝娱乐app下载地址\组件\Yaml\Yaml;YamlEncoder实现了EncoderInterface,DecoderInterface{公共函数编码(美元数据、字符串美元格式数组,美元上下文= []){返回Yaml::转储(美元数据);}公共函数supportsEncoding(字符串美元格式){返回yaml的= = =美元格式;}公共函数解码(字符串美元数据、字符串美元格式数组,美元上下文= []){返回Yaml::解析(美元数据);}公共函数supportsDecoding(字符串美元格式){返回yaml的= = =美元格式;}}

提示

如果你需要访问美元的上下文在你的supportsDecodingsupportsEncoding方法,确保实现欧宝娱乐app下载地址\组件\序列化器\编码器\ ContextAwareDecoderInterface欧宝娱乐app下载地址\组件\序列化器\编码器\ ContextAwareEncoderInterface相应的行动。

注册你的应用

如果你使用Symfony框架。欧宝娱乐app下载地址然后你可能想注册这个编码器作为服务在你的应用程序。如果你使用默认的服务。yaml的配置,那是自动完成!

提示

如果你不使用可以使用autoconfigure,确保注册您的类作为服务和标记serializer.encoder

现在你可以进行序列化和反序列化YAML !

这项工作,包括代码示例,许可下Creative Commons冲锋队3.0许可证。
欧宝娱乐app下载地址Symfony 6.0支持通过SensioLabs