Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Construindo estruturas complexas com serialização de objetos

Construindo estruturas complexas com serialização de objetos

Durante o processo de desenvolvimento, novos requisitos vão surgindo e você precisa ir mudando seu código, até chegar ao ponto em que você precisa construir saídas complexas para atender os determinados contextos em que seus objetos são serializados. Para esta talk, a ideia é mostrar desde a forma simples de serialização e a evolução até a construção dessas complexas estruturas.

Evento: PHP Experience 2018
Link: https://eventos.imasters.com.br/phpexperience/

Alef Castelo

March 06, 2018
Tweet

Other Decks in Programming

Transcript

  1. Agenda • O que é serialização de objetos? • serialize

    • json_encode + JsonSerializable • Fractal • JMS Serializer
  2. É o processo de salvar ou transformar um objeto em

    um outro tipo de dado ou armazenamento.
  3. A função serialize retorna uma string contendo uma representação byte-stream.

    Ela é capaz de serializar propriedades marcadas como private ou protected.
  4. Em muitos casos esse tipo de serialização não é o

    suficiente, pois precisamos transitar ou salvar dados em outros formatos.
  5. Person agora tem uma nova propriedade chamada pets e ela

    precisa vir na saída da serialização!
  6. Porém o size e a breed do pet, não é

    necessário vir na saída do json!
  7. Serializar o objeto não é o suficiente. Você precisa de

    algo que consiga definir regras para a saída!
  8. Transformers: são classes ou funções anônimas que têm a responsabilidade

    de converter seu objeto em um simples array. Include: é quando seu objeto possui relacionamento e esses relacionamentos precisam ser incluídos na saída. Manager: é quem vai transformar seus dados em determinados formatos.
  9. Ainda assim, pode ser muito custoso ter que criar e

    manter tantas classes para definir um ou mais grupos de saída.
  10. JMS Serializer Contém um rico conjunto de ferramentas para adaptar

    a saídas às suas necessidades específicas.
  11. Mas essa não é a única forma de excluir essas

    propriedades usando JMS Serializer!
  12. E se você precisar mudar o nome da saída da

    propriedade, mas não da classe? E a propriedade fosse exibida somente até determinada versão?
  13. A serialização de objetos pode se tornar algo complexo, onde

    existem várias combinações diferentes para cada tipo de saída!
  14. Com a definição errada dos grupos ou mesmo sem a

    definição deles, a serialização pode se tornar um gargalo em seu projeto.