Curso de DDD en PHP

Rafa GómezJavier Ferrer

Por Rafa Gómez y Javier Ferrer Diseño y Arquitectura de Software

Crea paso a paso tu aplicación PHP siguiendo Domain-Driven Design. Estructura de carpetas, integración con BD, sistema de colas, CQRS y más.

💸 ¡Primera lección disponible sin registro!

Curso completo para crear aplicaciones en PHP siguiendo los patrones tácticos y estratégicos de DDD

Qué veremos en este curso de Domain-Driven Design en PHP

  • [Gratis] 📖 Creación del proyecto: Bounded Context y Submodules - Estructura carpetas
    • 🎥 Bienvenida al curso: Objetivos, ¿qué aprenderás?
    • 🎥 Estructura de carpetas: DDD en PHP
  • 📖 Health check de la aplicación: Nuestro primer endpoint
    • 🎥 Crear Endpoint de health check
    • 🎥 Contenedor de inyección de dependencias: Controller como servicio
    • 🎥 Añadir tests de aceptación con Behat
  • 📖 Desarrollo Outside-in: Implementación del caso de uso para crear curso
    • 🎥 Implementación del endpoint y test de aceptación
    • 🎥 Integrar PhpUnit para test unitarios
    • 🎥 Implementación del caso de uso y test unitario
    • 🎥 Implementación del repositorio en fichero y test de integración
  • 📖 Modelando el dominio: Agregado Course
    • 🎥 Utilizando objetos Request y Response para comunicarnos con el Application Service
    • 🎥 Refacoting a UUIDs como identificadores
    • 🎥 Value Objects: Immutabilidad y tips para agilizar desarrollo
  • 📖 Modelando el dominio: Implicaciones en tests
    • 🎥 Patrón ObjectMother para nuestros tests
    • 🎥 Tests más semánticos
  • 📖 Guardar en base de datos con Doctrine
    • 🎥 Integración de Doctrine
    • 🎥 Mapeo de modelos en Doctrine: Custom Types vs Embeddables
    • 🎥 Implementación del repositorio para MySQL y test de integración
    • 🎥 Discriminator Map con Hibernate
  • 📖 Alternativa: Repositorios con Active Record - Eloquent
    • 🎥 Integrando Eloquent y diferencias entre Active Record y Data Mapper
    • 🎥 DDD en Laravel: Escondiendo Eloquent en infraestructura
  • 📖 Eventos de dominio síncronos con Symfony Messenger: Incrementar el total de cursos
    • 🎥 Integración de Symfony Messenger y adapter interface EventBus
    • 🎥 Publicación y suscripción de eventos de dominio y test de aceptación
    • 🎥 Idempotencia al consumir eventos: Implementación del caso de uso y test unitario
  • 📖 Testeando “parcialmente”: PhpUnit SimilarComprator
    • 🎥 Añadiendo Mockery
    • 🎥 Testeando guardar en el repositorio con eventos de dominio en el agregado
    • 🎥 Alternativa: publicar eventos desde agregados
  • 📖 Eventos de dominio asíncronos - MySQL
    • 🎥 Guardado de eventos de dominio en MySQL
    • 🎥 Consumir eventos de dominio desde MySQL
    • 🎥 Polling de base de datos para recuperar eventos
  • 📖 Publicar eventos de dominio asíncronos y escalables utilizando RabbitMQ
    • 🎥 Publicar eventos en RabbitMQ desde PHP
    • 🎥 Añadiendo un fallback a la publicación de eventos de dominio
  • 📖 Consumir eventos con RabbitMQ
    • 🎥 Generar la configuración del RabbitMQ automáticamente
    • 🎥 Consumir eventos en RabbitMQ desde PHP
    • 🎥 Supervisord y tips PHP
    • 🎥 Gestión de errores al consumir con RabbitMQ
  • 📖 CQRS
    • 🎥 Integración de Symfony Messenger como Command Bus
    • 🎥 Refactoring añadiendo CQRS a Arquitectura Hexagonal
    • 🎥 Integración y refactor a Query Bus
  • 📖 Bounded Contexts y módulos
    • 🎥 Crear módulo de Notificaciones
    • 🎥 Promocionar Módulo Notificaciones a Bounded Context de Retención
  • 📖 Frontend web
    • 🎥 Dando de alta una nueva aplicación: Backoffice Frontend
    • 🎥 Integración con Twig
    • 🎥 Mostrar contador de cursos vía query desde Controller
    • 🎥 Crear curso: Dónde ubicar validaciones de comandos
  • 📖 Backoffice
    • 🎥 Listado de cursos: Mantener proyección de cursos
    • 🎥 Filtrado de elementos: Patrón Criteria/Specification
  • 📖 Optimizando rendimiento en Read Model - Moviéndonos a NoSQL: Elasticsearch al rescate
    • 🎥 Primera importación de datos a Elasticsearch
    • 🎥 Mantener sincronizada la proyección de Elasticsearch
    • 🎥 Patrón Criteria/Specification con Elasticsearch
  • 📖 Optimizando rendimiento - Más allá de Elasticsearch: Optimizaciones MySQL, caching web y más
  • 📖Autorización
  • 📖Preguntas frecuentes
  • 📖 Conclusión y siguientes pasos

Cursos relacionados

Este curso complementa los cursos de:

Te recomendamos que si es la primera vez que escuchas sobre estos conceptos, primeros hagas los cursos del listado y vuelvas una vez los hayas hecho a este. Así podrás tener los conceptos más claros y aprovechar mucho más este curso, ya que vamos a ir por faena 😬🚀

¡Sólo por 29€ tienes acceso a todos los cursos!

Vídeo de introducción

Aquí el primer vídeo del curso para que te hagas una idea de la calidad del contenido 😬

Vídeos del curso

Cursos relacionados

Ver catálogo completo

Individuos

24,91€/ mes · pago anual299€ al año
  • 💻Acceso a todos los cursos
  • 🏅Contenido de calidad
  • 🧑‍🏫Profesionales con amplia experiencia
  • 🚀Nuevo contenido cada semana
  • 🧑‍🤝‍🧑Acceso a la comunidad CodelyTV
  • 🧑‍🎓Certificados al completar cursos
  • 💸12 meses por el precio de 10
SIN PERMANENCIA MÍNIMASuscríbete

Empresas

¿Crees que puede interesar a más miembros del equipo?

  • 💸Descuento de hasta un 40%
  • Gestión centralizada de cuentas
  • 🧑‍🏫Profesionales con amplia experiencia
  • 💼Facturas a nombre de empresa
  • 📈Reportes y analítica