ការប្រើប្រាស់ Serializer នៅក្នុង Symfony3

ការ Serialize និង deserialize ទៅនិងពី objects ហើយខុសទម្រង់ពីគ្នា (ដូចជា JSON រឺក៏ XML) គឺពិតជាប្រធានបទមួយដែលស្មុគស្មាញណាស់។ Symfony មកជាមួយនឹង Serializer Component ដែលអោយអ្នកនូវ tools ដែលអ្នកអាចបង្កើននូវដំណោះស្រាយកាន់តែមានប្រសិទ្ធភាព។

ជាការពិត មុននឹងអ្នកចាប់ផ្ដើម អ្នកត្រូវស៊ាំជាមួយនឹង serializer, normalizers និង encoders ដោយធ្វើការអាននូវ Serializer Component

១) ការ Activate នូវ Serializer

serializer service គឺមិនមែន available ដោយ default នោះទេ។ ដើម្បីបើកវា អ្នកត្រូវ activate នៅក្នុង configuration របស់អ្នក៖

២) ការប្រើប្រាស់នូវ Serializer service

ពេលដែលបានបើកវាហើយ នោះ serializer service អាចនឹងចាក់ចូលទៅក្នុង  service ផ្សេងទៀតជាកន្លែងដែលអ្នកត្រូវការវារឺក៏វាអាចនឹងត្រូវបានប្រើក្នុង controller ដូចរូបខាងក្រោម៖

៣) ការបន្ថែមនូវ Normalizers និង Encoders

ពេលដែលបានបើកវាហើយ serialize service អាចនឹង available នៅក្នុង container និងអាចនឹង load ជាមួយ encoders ចំនួន២ (JsonEncoder និង XmlEncoder) និង ObjectNormalizer normalizer

អ្នកអាច load normalizers ព្រមទាំង encoders ដោយធ្វើការ tag ពួកគេដូចជា serializer.normalizer និង serializer.encoder ។ វាក៏អាចទៅរួចក្នុងការកំណត់អាទិភាពនៃ tag ក្នុងលំដាប់ដើម្បីសម្រេចក្នុងការ ផ្គូរផ្គងផងដែរ។

នេះគឺជាឧទាហរណ៏សម្រាប់របៀប load នូវ GetSetMethodNormalizer

៤) ការប្រើប្រាស់ Serialization Groups Annotations

ធ្វើការបើក serialization grups annotation ជាមួយនឹង configuration ខាងក្រោម៖

បន្ទាប់មកទៀត ធ្វើការបន្ថែម @Groups annotations ទៅកាន់ class របស់អ្នកនិងធ្វើការជ្រើសរើស groups ណាមួយដើម្បីប្រើពេលធ្វើការ serialize៖

ក្នុងការបន្ថែម @Groups annotation, Serializer component ក៏អាច support Yaml រឺក៏ XML files ផងដែរ។ files ទាំងនោះ គឺធ្វើការ loaded ដោយស្វ័យប្រវត្តិពេលដែលកំពុងតែរក្សាទុកក្នុង ទីតាំងមួយដូចខាងក្រោម៖

ក) serialization.yml រឺក៏ serialization.xml file ក្នុង Resources/config/ directory នៃ bundle

ខ) *.yml និង *.xml files ក្នុង Resources/config/serialization directory នៃ bundle។

៥) ការ Enable នូវ Metadata Cache

Metadata ត្រូវបានប្រើដោយ Serializer component ដូចជា groups អាចជា cache ក្នុងការបង្កើននូវ ដំណើរការនៃ application។ Service ផ្សេងទៀតធ្វើការ implement នូវ Doctrine\Common\Cache\Cache interface ដែលអាចនឹងប្រើ។

Service leveraging APCu (និង APC សម្រាប់ PHP <5.5) គឺ built-in។

៦) ការ Enable នូវឈ្មោះ Converter

ដើម្បីប្រើប្រាស់នូវ name converter service អាចនឹងធ្វើការកំណត់ក្នុង configuration ដោយប្រើប្រាស់នូវ name_converter option។

Built-in CamelCase to snake_case name converter អាចនឹង​បាន enable ដោយប្រើប្រាស់តម្លៃ serializer.name_converter.camel_case_to_snake_case

៧) អ្វីដែលចង់បន្ថែមជាមួយ Serializer

ApiPlatform ផ្ដល់នូវ API system ដែល​ support នូវទម្រង់ JSON-LD និង Hydra Core Vocabulary hypermedia ។ វាគឺបានបង្កើតឡើងនៅលើគេបង្អស់នៃ System Framework និង Serializer component របស់វា។ វាផ្ដល់នូវ custom normalizers និង custom encoder, custom metadata និង caching system។