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

Domain-Driven Design com PHP

Domain-Driven Design com PHP

Como aplicamos Domain-Driven Design (DDD, Eric Evans) com PHP, usando o framework Neos Flow na Agilize Contabilidade Online (https://www.agilize.com.br). Palestra realizada no 2º Encontro de Dev's PHP (PHP com rapadura), em Fortaleza.

Thiago Colares

October 05, 2016
Tweet

More Decks by Thiago Colares

Other Decks in Technology

Transcript

  1. Domain-Driven
    Design com PHP
    Fortaleza, Setembro – 2016
    2º Encontro de Dev's PHP

    View Slide

  2. Thiago Colares

    View Slide

  3. View Slide

  4. View Slide

  5. https://zombiecodekill.files.wordpress.com/2015/09/ddd.jpg

    View Slide

  6. https://www.flickr.com/photos/harquail/17179719119/sizes/l

    View Slide

  7. Linguagem
    ubíquia

    View Slide

  8. Especialistas
    do domínio

    View Slide

  9. Time de
    desenvol-
    vimento
    Especialistas
    do domínio

    View Slide

  10. Time de
    desenvol-
    vimento
    Especialistas
    do domínio
    Linguagem
    ubíqua

    View Slide

  11. View Slide

  12. Modelando o
    domínio

    View Slide

  13. https://www.safaribooksonline.com/library/view/domain-driven-design-tackling/0321125215/graphics/fminf01.jpg

    View Slide

  14. View Slide

  15. View Slide

  16. Entities

    View Slide

  17. Value Objects

    View Slide

  18. View Slide

  19. Entities ou
    Value Objects?

    View Slide

  20. View Slide

  21. https://www.tenuz.com/wp-content/uploads/2015/04/Car-parts-1.jpg

    View Slide

  22. https://www.tenuz.com/wp-content/uploads/2015/04/Car-parts-1.jpg
    Aggregate
    Root
    Aggregate
    Child
    Aggregate
    Child

    View Slide

  23. View Slide

  24. Ciclo de vida
    dos objetos

    View Slide

  25. View Slide

  26. View Slide

  27. View Slide

  28. View Slide

  29. View Slide

  30. Bounded context
    (Contexto delimitado)

    View Slide

  31. Cliente
    Nome
    Identificador
    Cartões de Crédito
    Endereço
    Validação do Pagamento
    Validação do Cartão

    View Slide

  32. Cliente
    Nome
    Identificador
    Cartões de Crédito
    Endereço
    Validação do Pagamento
    Validação do Cartão
    Agendamento
    de consulta

    View Slide

  33. Cliente
    Nome
    Identificador
    Cartões de Crédito
    Endereço
    Validação do Pagamento
    Validação do Cartão
    Agendamento
    de consulta
    Pagamento

    View Slide

  34. Cliente
    Nome
    Identificador
    Cartões de Crédito
    Endereço
    Validação do Paga...
    Validação do Cartão
    Pagamento
    Cliente
    Nome
    Identificador
    Agendamento
    de consulta

    View Slide

  35. Shared Kernel
    Customer / Supplier
    Conformist
    Anti-Corruption Layer
    Domain Event
    Padrões para relacionar
    Bounded contexts

    View Slide

  36. OBRIGADO
    www.agilize.com.br
    Thiago Colares
    Fortaleza, Setembro
    2016

    View Slide