Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.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中使用json_解码vs JsonDecode_Php_Symfony_Encoder - Fatal编程技术网

Php 在Symfony中使用json_解码vs JsonDecode

Php 在Symfony中使用json_解码vs JsonDecode,php,symfony,encoder,Php,Symfony,Encoder,我是Symfony应用程序开发领域的新手。我目前在Symfony 2.8工作,我经常在同事中发现关于使用通用PHP函数(如json\u decode或json\u encode)与Symfony自己的JsonDecode和jsonecode的争论。我经常被告知,与其使用json_编码或json_解码,不如使用Symfony提供的编码器类,即JSONECODE和JsonDecode来实现相同的功能。 我想知道的是 放弃使用此类泛型函数而支持Symfony编码器类真的那么重要吗 它对性能有任何帮助

我是Symfony应用程序开发领域的新手。我目前在Symfony 2.8工作,我经常在同事中发现关于使用通用PHP函数(如json\u decode或json\u encode)与Symfony自己的JsonDecode和jsonecode的争论。我经常被告知,与其使用json_编码或json_解码,不如使用Symfony提供的编码器类,即JSONECODE和JsonDecode来实现相同的功能。 我想知道的是

  • 放弃使用此类泛型函数而支持Symfony编码器类真的那么重要吗

  • 它对性能有任何帮助吗

  • 这样的建议仅仅是更好的编码策略的一部分,还是使用json_encode in code有任何缺点

我真的很想知道这场炒作的背后是什么,欢迎提供任何帮助

提前谢谢

1)我想,由于Symfony文档的Symfony最佳实践部分中没有涉及此主题的词语-不,此类功能的使用不是强制性的-您可以选择更适合您的方式,但它可以使您的代码更可持续地更改您使用的PHP版本,您将在回答下一个问题时看到这些版本

2) 不,它不是-它只是json_解码和json_编码的包装器,并为我们提供了一些额外的工具。对于JsonDecoder,它将Json解码器的默认选项与上下文合并,传递给函数,并在php版本之间解析Json_解码的签名


3) 我认为使用json_decode的唯一缺点是,如果您在PHP版本>=5.4中使用四个参数,并且突然决定将项目中的PHP版本更改为<5.4,但与json_encode完全不同,则需要在代码的每个位置更改传递给它的参数集。对我来说,这只是更好的编码策略的一部分,只不过是为您提供Symfony项目贡献者团队所做的轻松快速的工作。

如果您真的获得了相同的结果,那么使用PHP的原生
json\u解码就更好了。因为它需要使用Symfony的编码器。但是,您可以使用Symfony的序列化程序

它对性能有任何帮助吗

不会。它增加了开销,因为它基本上增加了额外的功能,并围绕PHP的原生
json\u decode

放弃使用这种通用语言真的那么重要吗 支持Symfony编码器类的功能

简短的回答是否定的,但真正的答案更复杂。Symfony的编码器类在处理实体时有一些优势,在较新版本的Symfony中尤其如此。如果您设置了要使用的项目,那么它可能是值得的。如果你愿意,情况会更糟

这些建议只是更好的编码策略的一部分,还是 比如说,在代码中使用json_编码有什么缺点吗

缺点是您可能需要编写更多的代码来反序列化对象以匹配您的实体。好处是代码不会与Symfony耦合,如果需要,可以更容易地进行移植