Я относительно новичок в мире разработки приложений в Symfony. Я сейчас работаю в Symfony 2.8 и я часто нахожу спор среди моих коллег об использовании общих функций PHP, таких как json_decode или json_encode против собственного JsonDecode и JsonEncode Symfony. Мне часто говорят, что вместо использования json_encode или json_decode мы должны скорее использовать классы кодировщика, предоставляемые Symfony, а именно JsonEncode и JsonDecode, чтобы достичь того же.
Что мне любопытно узнать,
Неужели так важно отказаться от использования таких общих функций в пользу классов кодировщика Symfony?
Это как-то помогает в производительности?
Являются ли такие рекомендации только частью лучшей стратегии кодирования или есть недостатки в использовании, скажем, json_encode в коде?
Я действительно хочу знать, что стоит за этой шумихой, и любая помощь будет приветствоваться.
Заранее спасибо !
1) Полагаю, поскольку в документации Symfony Best Practices нет части, охватывающей эту тему, — нет, использование такой функции не является обязательным — вы можете выбрать способ, который вам больше подходит, но он может Ваш код более устойчив к изменению используемых вами версий PHP, которые вы увидите в ответе на следующий вопрос.
2) Нет, это не так — это просто оболочки для json_decode и json_encode с некоторыми дополнительными инструментами, предоставленными нам. В случае JsonDecoder он объединяет параметры по умолчанию Json Decoder с контекстом, передается в функцию и разрешает подпись json_decode между версиями php.
3) Я думаю, что единственным недостатком использования json_decode будет необходимость изменения набора параметров, передаваемого ему в каждом месте вашего кода, если вы используете его с четырьмя аргументами в версии PHP> = 5.4, и тогда вы вдруг решите изменить версию PHP на вашем проекте к чему-то < 5.4, но ничего подобного с json_encode. Для меня это только часть лучшей стратегии кодирования и не более, чем попытка предоставить вам простоту и скорость, сделанную командой разработчиков проекта Symfony.
Если вы действительно достигли того же результата, чем вам лучше использовать нативный PHP json_decode
, как это требует работы с Symfony Serializer Component воспользоваться кодировщиками Symfony. Однако вы можете создать свой собственный кодер работать с сериализатором Symfony.
Это как-то помогает в производительности?
Нет. Это добавляет накладные расходы, поскольку оно в основном добавило дополнительную функциональность и обернуло его вокруг нативного PHP json_decode
, Ссылка на текущий код.
Неужели так важно отказаться от использования такого общего
функции в пользу классов кодировщика Symfony?
Короткий ответ — нет, но реальный ответ более сложный. Классы кодировщика Symfony имеют некоторые преимущества при работе с сущностями, особенно это касается новых версий Symfony. Если вы настроили свой проект для использования Symfony Serializer Component тогда это может стоить того. тем более, если ты написать свой собственный кодер.
Являются ли такие рекомендации только частью лучшей стратегии кодирования или
Есть ли недостатки использования, скажем, json_encode в коде?
Недостатком является то, что вам, возможно, придется написать больше кода для десериализации вашего объекта обратно в соответствии с вашей сущностью. Преимущество в том, что код не будет связан с Symfony и будет проще переносить при необходимости.