Curso de DDD en PHP
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:
- Principios SOLID Aplicados
- Arquitectura Hexagonal
- Testing: Introducción y buenas prácticas
- CQRS: Command-Query Responsibility Segregation
- Comunicación entre [micro]servicios con Event-Driven Architecture
- Domain-Driven Design
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
Paga según tus necesidades
lite (sólo mensual)
19 €
al mes
- Cursos esenciales de programación para construir una base sólida
- Factura de empresa
standard
24,92 €
Ahorro vs mensual de 49 €
Pago anual de 299 €
al mes- Catálogo principal para dominar cómo escribir un código mantenible, escalable y testable
- Recibir ofertas de empleo verificadas por Codely
- Factura de empresa
premium
41,58 €
Ahorro vs mensual de 89 €
Pago anual de 499 €
al mes- Cursos exclusivos de IA para mantenerte siempre actualizado
- Acceso anticipado a nuevos cursos
- Descuento en workshops
- Recibir ofertas de empleo verificadas por Codely
- Factura de empresa
No subiremos el precio mientras mantengas tu suscripción activa