---
title: '#1 Laravel + DDD + Arquitectura Hexagonal: Desarrollo Profesional Explicado Paso a Paso | GOGODEV'
source: 'https://youtube.com/watch?v=1wOlkylJPT4'
video_id: '1wOlkylJPT4'
date: 2026-07-28
duration_sec: 2406
---

# #1 Laravel + DDD + Arquitectura Hexagonal: Desarrollo Profesional Explicado Paso a Paso | GOGODEV

> Source: [#1 Laravel + DDD + Arquitectura Hexagonal: Desarrollo Profesional Explicado Paso a Paso | GOGODEV](https://youtube.com/watch?v=1wOlkylJPT4)

## Summary

This video introduces a professional course on implementing Domain-Driven Design (DDD) and Hexagonal Architecture in Laravel. The instructor outlines prerequisites, explains the project structure, and demonstrates how to set up a boilerplate for future development.

### Key Points

- **Course Introduction** [00:00] — The instructor announces a new professional course on Laravel with DDD and Hexagonal Architecture, addressing audience requests.
- **Prerequisites** [01:40] — Viewers need prior knowledge of Laravel, DDD, Hexagonal Architecture, and SOLID principles. Links to prerequisite videos are provided.
- **Version Considerations** [04:21] — The course uses Laravel 12, but concepts are framework-agnostic and will remain valid across versions. Updates will be provided if needed.
- **Course Structure** [06:18] — The course will be released weekly on Mondays, aiming for 8 sessions of about one hour each.
- **Boilerplate Setup** [08:44] — The instructor creates a new Laravel project and modifies the directory structure to support Hexagonal Architecture.
- **Directory Structure** [14:35] — A 'src' directory is created with subdirectories for bounded contexts (e.g., admin, platform, landing). Each bounded context contains application, domain, and infrastructure layers.
- **Automation Command** [29:05] — A custom Artisan command 'make:ddd' is introduced to automate the creation of the directory structure for new bounded contexts and entities.
- **Route Loading** [35:33] — The command also generates route files and integrates them with Laravel's route loading, but alternative methods are possible.

### Conclusion

The video sets up the foundational boilerplate for a Laravel project with DDD and Hexagonal Architecture, including an automated command to streamline future development.

## Transcript

Hola deps Bueno Este es quizás uno de
los contenidos que más nos habíais
estado pidiendo a lo largo del Canal y
Bueno aquí estamos otra vez al comienzo
de un largo camino puesto que una vez
más nos vamos a meter en el lío de
grabar un nuevo curso profesional en
este caso larabel dd y hexagonal Y es
que bueno era que teníamos pendient hace
mucho tiempo y el otro día no recuerdo
muy bien cuándo estaba viendo por ahí
YouTube y en los shorts me salió este
vídeo de aquí una de las cosas que veo
que me da un poco de pena Es que me da
la sensación que no podemos hacer
contenido que se salga de lo básico
porque entonces Os salís todos corriendo
entonces luego la gente me dice Ah vamos
a hacer arquitectura exagonal Sí hago
arquitectura exagonal y estoy aquí solo
haciendo arquitectura sagon Y bueno pues
eh lo estaba viendo y digo pues es una
Lástima que Que poca gente se anime a a
grabarlo ya sea
por por número de gente que pueda estar
interesado en seguir lo demás
afortunadamente nosotros no tenemos ese
problema porque ya sabéis que esto no es
no es una profesión es simplemente el
ánimo de compartir con vosotros Así que
listo no le demos más vueltas curso de
larabel de de day hexagonal profesional
vamos a
[Música]
muy bien y antes de comenzar vamos a
establecer a una serie de requisitos que
van a ser necesarios para poder seguir
este curso con normalidad Y es que
tenéis que tener en cuenta que este no
es un curso básico sino que vamos a
necesitar ciertos conocimientos previos
para poder seguirlo con
normalidad lo primero que vamos a
necesitar evidentemente vamos a estar
aplicando arquitectura exagonal y DVD a
en este caso larabel por lo tanto
necesitamos conocer l arabel si no lo
conocéis os lo dejo por aquí y si no en
la descripción os aparecerá el enlace al
curso profesional del arabel que tenemos
en el canal ya sabéis que todo es
totalmente gratuito podéis verlo sin
problemas todo en YouTube muy bien Si ya
conocemos la arabel y hemos visto ese
curso que sería el necesario ya sea
porque lo habéis superado o bueno porque
ya conocíais la arabel con
anterioridad y evidentemente todos los
requisitos que este tiene el siguiente
paso sería conocer los principios del
domain driven design y de la
arquitectura
hexagonal Si no los conocéis Pues
también tenéis un vídeo en el canal
también os lo dejo por aquí o en la
descripción os aparecerá para que podáis
ver arquitectura hexagonal y domain
driving design los fundamentos teóricos
es un vídeo muy cortito para que sepamos
en todo momento de qué estamos hablando
y sepamos ubicarnos dentro del contexto
de trabajo que vamos a estar realizando
por último Y de forma transversal vamos
a estar utilizando los principios solid
a lo largo de todo el curso Si no los
conoces y este ya por último también te
lo dejo por ahí o en la descripción para
que puedas verlo así pues si tenemos los
conocimientos necesarios sobre el arabel
en este caso el el framework de trabajo
y todos los requerimientos previos que
este tiene si conocemos solid Y si
conocemos los fundamentos de la
arquitectura que vamos a estar
trabajando eso es suficiente para poder
seguir este contenido y si te falta
Cualquiera de esos conocimientos
Recuerda que ahí tienes los vídeos para
verlos cuando quieras y poder comenzar
si no estás seguro de si tienes el nivel
necesario Pues yo te annimo a que
empieces a verlo y si ves que te quedas
cojo en alguna parte pues siempre tienes
ahí esas listas de reproducción Para
volver a los basics cuando lo
necesites aclarado esto quiero también
poner
otro punto importante que creo que es
relevante porque es una consulta que
suele aparecer mucho en los los
comentarios del Canal y Es sobre las
versiones de trabajo en este caso
nosotros vamos a estar trabajando con la
versión del arabel 12 que a día de esta
grabación es la última que hay la
larabel 12 sin embargo tened en cuenta
que el equipo de larabel saca Major
version cada 6 meses por lo tanto es
potencialmente posible que cuando veas
este vídeo la ya estemos en la versión
13 o incluso en la 14 porque al final si
sale meor versión cada 6 meses el ritmo
es muy elevado sin embargo no tienes que
preocuparte por esos problemas no tienes
por qué preocuparte en exceso por la
versión en la cual estás trabajando
nosotros estamos ubicando conceptos que
son transversales al framework y que no
están sujetos o no son muy sensibles
a modificaciones que pudiesen estar
afectándolo lo mismo con el curso de
Lara del profesional del árabe del
básico que si no recuerdo mal estaba con
la versión 10 creo recordar o parte con
la nueve y parte con la
10 y no hay ningún problema al final los
fundamentos son fundamentos y siguen
estando ahí y en el caso de arquitectura
exagonal y dd va a ocurrir lo mismo todo
lo que vamos a estar aplicando dentro
del contenido va a seguir estando ahí en
las nuevas versiones porque no estamos
trabajando partes muy sensibles no
obstante si por supuesto en algún
momento momento saliese alguna
actualización en estos Major version que
estuviese afectando de una forma directa
a lo que estáis viendo pues en esta
misma lista de reproducción os
encontraría siempre por ahí algún vídeo
de actualización explicando esos cambios
que pudiese haber y Este es otro de los
puntos que quería comentaros tenéis por
ahí la lista de reproducción yo os
recomiendo que la guardéis para que
podáis ir viendo las diferentes clases y
así no os perdáis nada el ritmo de
publicación si lo estás viendo en
directo va a ser todos los lunes a las 8
hora española ese va a ser el ritmo de
publicación y me gustaría si el tiempo
nos respeta y dentro de lo posible que
se organizas en ocho sesiones ocho
sesiones de Cara a que quizás nos puedan
quedar un poquito más extensas Esta es
el esta primera clase simplemente la
toma de contacto pero las posteriores
quizás sean más extensas duren más de
una hora que es más o menos el formato
al cual nos hemos
intentado ajustar los cursos
profesionales el de 50 horas de View y
el de arabel ambos tienen ese formato
más o menos de una intentar hacer una
hora por vídeo pero
eh Claro si hacemos un proyecto como
hicimos en View de 50 horas Pues nos va
a quedar al final
un contenido muy extenso en el tiempo y
al final de viw fueron más de un año
Casi casi algo más de un año grabando
clases y no es mi intención mi intención
es que sea se ejecute en un tiempo más
reducido Yo creo que si lo hacemos en
ocho sesiones lo estamos encajando si si
publicamos uno a la semana durante ocho
sesiones pues van a ser dos meses y en
dos meses tenemos el curso terminado y
podemos movernos hacia otros temas como
podría ser tenemos dos todavía pendiente
dentro del larabel que es Quizá el tema
que no nos trata dentro de aquí tenemos
todavía pendiente cqrs tenemos todavía
pendiente microservicios tenemos todavía
eh
pendiente d design y un poquito de por
ahí conexiones con Rabbit and que y
algunas cosillas que hemos hablado en
alguna ocasión todo eso pues irá
viniendo y para que pueda ir viniendo
Necesitamos ir limpiando parrilla Así
que vamos a intentar encerrarlo en esas
8 semanas muy bien dicho Todo esto Ahora
sí manos al código a
[Música]
programar y gracias a la magia de la
edición ya nos encontramos aquí en las
oficinas de 64 para continuar avanzando
en la parte de codificación de toda la
solución y lo primero que vamos a estar
realizando va a ser la generación de un
boiler Plate que nos pueda dar aporte a
todos los desarrollos que vayamos a
estar haciendo de aquí en adelante con
este patrón de diseño y arquitectura Y
es que si lo pensamos o lo tenemos en
cuenta larabel por defecto está pensado
estructuralmente para soportar una
arquitectura de nvc o modelo vista
controlador y nuestro interés va a ser
adaptarla para que se ajuste mejor a
cualquier desarrollo en este caso
hexagonal punto importante también sobre
este aspecto Y es que yo voy a estar
hablando tanto de domain driven design
como hexagonal que son ambas
eh Son ambas soluciones las que vamos a
ir eh desarrollando a lo largo del
contenido pero tenemos que ser
consciente de que aunque ambos conceptos
son complementarios y funcionan muy bien
Juntos son conceptos distintos dom Mind
driven design es un patrón de diseño y
arquitectura hexagonal es un patrón de
arquitectura son cosas distintas en la
caja de descripción os dejo la
información de los fundamentos teóricos
y la diferencia por si queréis echarle
un vistazo podáis tenerla a mano y que
no confundamos terminología no obstante
nosotros a lo largo de este contenido
vamos a estar viendo ambas soluciones y
vamos a estar integrando los dos pero
para que sepamos diferenciarlos Muy bien
pues como decía lo primero que vamos a
hacer es un Boiler Plate vamos a hacer
una estructura que nos pueda servir para
adaptar L arabel y utilizar todo este
tipo de patrones en esta eh primera fase
o fase inicial nosotros vamos a estar
construyéndolo de tal forma que nos dé
soporte a la estructura básica y en las
lecciones finales vamos a estar
adaptándolo también para eh algunos de
vosotros Probablemente lo sabrá los
hacer las adaptaciones sobre el orm para
trabajar también no solo con en este
caso con eloquent sino con algún
doctrine o alguna versión más dat mapper
que también nos pueda funcionar mejor en
en esta situación pero todo eso lo
iremos viendo más adelante de momento
vamos a comenzar por el principio voy a
hacer por aquí una un
directorio para comenzar a trabajar y lo
que voy a hacer es dentro del
mismo lo tenemos por aquí vamos a
abrirlo con visual Studio code y vamos a
crear un primer proyecto sobre el cual
ir aplicando toda esta estructura bien
comenzamos por el principio me vengo por
aquí al
terminal Y como decía el primer paso va
a ser
generar nuestro proyecto que en este
caso yo lo voy a llamar d boiler Plate
puesto que es lo que vamos a estar
realizando como siempre aquellos que ya
habéis seguido alguno de nuestros
contenidos no os preocupéis por los
mensajes que me aparecen aquí en consola
a vosotros no os saldrán es porque yo
tengo habilitado eh esta parte de
verbosidad sobre la parte de preciados
porque lo utilizamos nosotros en la
empresa bien eh dentro de las preguntas
que me va a estar haciendo el arabel
Installer no vamos a usar ningún starter
kit vamos a dejarlo todo de base y da
igual el framework que eh especifiques
para los test puesto que los test los
trataremos de forma aparte ahora mismo
para nuestro boiler Plate nos da igual
yo voy a poner php unit pero podríais
estar colocando pest o el que prefiráis
aquí va a ser eh totalmente indiferente
de hecho esa es quizás una de las
ventajas que vamos a estar aplicando con
este tipo de arquitectura y va a ser la
posibilidad de abstra de todo este tipo
de instalaciones vamos a dejarlo todo
preparado vamos a esperar a que finalice
el scaffolding inicial y ahora sobre
este scaffolding vamos a estar haciendo
algunas modificaciones Y es que
eh cuando estamos trabajando dentro del
arabel con patrón de arquitectura en vic
o modelo vista controlador si recordáis
nosotros tenemos una estructura que está
100% acoplada al framework es decir todo
lo que nosotros vamos a estar trabajando
va a estar acoplado de de forma
inherente a toda la estructura del
framework de trabajo siguiendo los
patrones que vamos a estar apc and
nosotros deberíamos evitar el
acoplamiento tanto a infraestructura
como también dentro de forma interna el
acoplamiento de clases o el acoplamiento
de las diferentes áreas de negocio o
entidades entonces para poder hacer todo
esto vamos a necesitar hacer algunas
modificaciones sobre la estructura de
larabel entonces una vez una vez se
finalice lo primero que vamos a estar
haciendo es ahora que cuando tengamos el
el el autoload va a ser modificar la
carpeta de trabajo vamos a en primer
lugar no mezclar el contenido que
tenemos con el contenido que ya nos
ofrece arabel si si estáis habituados
Pues sabéis que toda la parte que
correspondería aacen va dentro del
directorio app o app y nosotros lo que
vamos a hacer es moverlo hacia un
directorio nuevo donde vamos a estar
trabajando de una forma aislada para eso
vamos a estar eh Pues modificando un
poquito el en este caso el composer muy
bien Vamos a esperar a que finalice y
continuamos muy bien ya ha finalizado el
scaffolding ya simplemente me pregunta
eh Qué motor de bases de datos vamos a
estar utilizando yo en mi caso pues voy
a marcar squel Lite porque es lo más
cómodo ahora mismo para comenzar pero
recordad que en cualquier momento si
queréis modificarlo pues podemos
utilizar my squel o cualquiera de otros
obviamente luego para pasar a a
producción modificarías ese ese motor
pero ahora mismo me vale No y bueno me
pregunta si deseo ejecutar las
migraciones voy a decirle que sí y Listo
ya tenemos nuestro eh Pro el scaffolding
finalizado con nuestro proyecto
preparado Entonces lo primero que voy a
hacer antes de nada Y como siempre va a
ser Acceder al directorio de trabajo
para poder comenzar a realizar las
modificaciones y la primera que vamos a
estar realizando como decía va a es cómo
vamos a estar afectando a la estructura
de directorios si os fijáis y lo
conocemos más que de sobra verdad dentro
de la estructura de directorios dentro
del eh directorio app o app lo que
tenemos es aquí Toda la estructura de lo
que corresponde al backend de la
aplicación al igual que por ejemplo las
vistas las tenemos por aquí dentro de
los resources muy bien nosotros lo que
vamos a hacer es desacoplar un poco todo
lo que vamos a ir realizando ya
directamente eh del toda la estructura
incluso del directorio para que luego
tengamos muy bien diferenciado todo lo
que hemos ido trabajando nosotros de
todo lo que el arabel aporta a nivel de
infraestructura entonces lo que voy a
hacer es crear un nuevo folder y este
folder yo lo voy a llamar eh src o
source o como queráis llamarlo el nombre
no es relevante podéis llamarlo como
prefiráis yo estoy acostumbrado a
llamarlo eh src Ya que es bastante
descriptivo de lo que vamos a estar
ubicando dentro de esta parte y son en
este caso todos nuestros recursos muy
bien ya lo tenemos por aquí sin embargo
eh Como bien sabéis cuando nosotros
creamos aquí un directorio no es
reconocido por l arabel es decir
nosotros lo hemos introducido aquí pero
no forma parte del proyecto necesitamos
que forme parte del proyecto y para ello
lo que vamos a estar haciendo es
modificar nuestro compost ser Jason para
que pueda indexar toda esta parte del
contenido que nosotros vamos a estar
desarrollando aquí en src y de esta
forma podamos utilizarlo bien si
acudimos por aquí al autoload que tiene
el composer Jason este se encarga de
realizar las cargas para los diferentes
directorios y fijaos como nos autocarga
ya o nos mapea ya el directorio de
App
nosotros vamos a indicar
que también queremos mapear el
directorio
src y el directorio src que vamos a
estar mapeando va a ir contra el
directorio que acabamos de crear que es
este de
aquí muy bien ahora además de estar
tomando el app del directorio app que es
lo que ya hacía por Norma general además
va a estar utilizando el src
que nosotros hemos marcado aquí como src
Y de esa forma Ya lo tenemos mapeado ya
podremos hacer el el seguimiento Muy
bien pues ya tenemos la primera de las
partes que vamos a ir necesitando ahora
además de eso vamos a realizar alguna
modificación adicional para que no solo
nos mape toda esta parte sino que
podamos ir trabajando con el eh resto de
de elementos que vamos a necesitar para
ir configurando nuestra estructura vamos
a por
[Música]
ello Muy bien pues vamos a continuar
adaptando nuestra estructura y para
poder realizarlo lo primero que vamos a
tener que hacer es entender cuál va a
ser la estructura de directorios que
nosotros vamos a estar construyendo
dentro de ese rc bien la estructura que
vamos a seguir va a ser la siguiente y
va ser bastante sencillo de entender
sobre todo si ya habéis visto el el
vídeo del de dday hexagonal Y es que lo
primero que vamos a hacer dentro de src
o en primer lugar lo que vamos a hacer
es colocar un directorio por cada
bounded context es decir por cada
contexto vamos a crear un eh directorio
dentro de src recordamos que dentro de
los bounded context pues vamos a
entender los diferentes usos que se
pueden estar dando de nuestra
plataforma no de nuestro desarrollo como
podría ser por ejemplo Oye pues voy a
crear un bounded context para el panel
de administración o para el admin voy a
crear un bounded context para el uso de
este proyecto de la plataforma dentro de
una web y voy a crear también a lo mejor
pues no sé un tercer bounded context
para para landing y material de
marketing no independiente aquí cada
cada proyecto tendría su bounded context
concreto nosotros Pues dentro de la
estructuración que vamos Air realizando
voy a usar eso de momento como ejemplo
para que podamos entender cuál va a ser
la estructura entonces lo que decía si
nosotros estamos haciendo vamos a
suponer por ejemplo pues una plataforma
de formación una plataforma e-learning
tipo como la que podría ser además o
como podría ser cser o como podría ser
cualquiera de las otras pues lo primero
que haría sería crear un bounded context
admin lo voy a llamar así para colocar
ahí todo lo referente a administración
después vamos a crear otro bound context
que en este caso lo voy a llamar cuidado
que se creen src Ahí está que lo podría
llamar pues por ejemplo e lms user
platform o lo que sea es decir en este
caso pues el contenido del desarrollo
y voy a llamarlo si queréis platform que
es más genérico para que lo entendamos
vale platform de la plataforma y después
Podría tener otro bounded context pues
eso para landing marketing y otro tipo
de elementos entonces cada uno de los
bounded context lo vamos a generar en
una carpeta todo esto lo iremos con la
práctica ejemplificando y veréis que no
es tan complicado es bastante sencillo
al final ir diferenciando Cuáles son los
contextos de uso que va a tener nuestra
plataforma en este caso pues podemos
marcar estos tres No ahora supongamos
que yo inicialmente pues voy a estar
desarrollando la plataforma en misma y
ahora aquí dentro de la de de esta
plataforma voy a definir cada uno de eh
los módulos que voy a estar trabajando
cada uno de los elementos cada una de
las entidades con todo su contexto todo
esto lo iremos viendo
en sucesivas eh clases para que podáis
entender muy bien Cuál es su
estructura así pues ahora lo que vamos a
estar haciendo es introducir dentro de
cada uno de los bounded context los
diferentes entidades o dominios que
vamos a tener en cada uno de los
elementos estas entidades o dominios que
vamos a
colocar Aunque ahora para que podamos
entender la estructura pues vamos a ir
ubicando una unas cuantas para hacer un
ejemplo evidentemente luego a la hora de
desarrollar pues las iremos creando
conforme las vayamos necesitando en este
caso ahora mismo yo por ejemplo pues voy
a suponer de que en esta plataforma
hubiese el
curso que tuviese también el usuario por
ejemplo y pues que hubiese también otro
que fuesen por ejemplo pues
certificaciones o diplomas o algo
así muy bien como ejemplo nos vale no
tenemos nuestro directorio src y nuestro
dentro de nuestro directorio src los
tres bounded context que hemos definido
el uso de administrador el uso de
landing y el uso para la plataforma y en
el caso de la plataforma pues tenemos el
curso el diploma y el usuario De igual
forma si yo por ejemplo dentro de la
Administración dentro del panel de
administración también tuviese que usar
por ejemplo el usuario también lo
generaría dentro es decir también
crearía aquí el usuario dentro de admin
o suponiendo que dentro de admin Pues
también esté por ejemplo eh usando el la
administración de cursos por ejemplo
Pues podría tenerlo podría darse ese
caso de hecho es natural y normal que se
dé porque aunque se llamen igual van a
tener un contexto distinto en el caso de
El bounded context de administración
pues lo referente a a user pues serán
acciones para Pues a lo mejor pues
banear un usuario o eh restablecer la
contraseña o dentro de los cursos Pues
será para crear cursos para ah
visualizar métricas de cursos lo que sea
dentro de lo que tiene sentido dentro
del panel de administración mientras que
dentro de la sección de plataforma por
ejemplo el la sección de usuario pues
estará más enfocada a que un usuario
pueda modificar su perfil por ejemplo o
dentro de la sección de cursos pues lo
que tendremos será listar cursos
apuntarse a un curso etcétera cada uno
le dará un uso distinto en base a su
contexto todo esto lo sabemos del vídeo
de arquitectura hexagonal y ddd bien
teniendo esto Ahora como ejemplo y ya
siguiendo esa estructura Pues por cada
uno de los directorios que vayamos
construyendo vamos a tener siempre y
aquí tenemos nuestra capa de
aplicación nuestra capa de
dominio y nuestra capa de
infraestructura qué es lo que Define a
todo tod lo que estamos trabajando esto
seguro que lo sabéis del vídeo es uno de
los puntos más importantes con los que
tenemos que quedarnos bien
Entonces esto lo vamos a hacer por cada
uno de ellos es decir si yo aquí dentro
de diploma Pues también tendría
infraestructure structure
aquí tendría también
domain tendría también
application De igual forma con el resto
igual concurso y también Dentro de este
contexto con los
correspondientes muy bien y ahora en
base a
eh aquí hay un punto un poco más
subjetivo y por eso os comento ambas
soluciones para que escojáis la que
prefiráis Y es que ahora podemos dentro
de la capa de dominio de usuario colocar
Su contenido dentro de la capa de
aplicación colocar Su contenido y De
igual forma dentro de la capa de
infraestructura colocar Su contenido y
ya está o podemos también Seguir
generando más estructura de directorios
para
diferenciarlo un poquito más No pues por
ejemplo dentro de la capa de
infraestructura Pues yo ahora podría
diferenciar entre Pues no sé pues rutas
podría diferenciar por ejemplo con
perdón con repositorio
podríamos eh eh tener también pues la
capa de no sé de de
observadores todo lo que pudiésemos
necesitar no igual en la capa de domain
donde podríamos tener por ejemplo la
entidad las entidades normalmente la
entidad y podríamos tener por ejemplo
los value objects
y De igual forma también en aplicación
es decir podríamos ir diferenciando
dentro de cada uno de cada una de las
capas a su vez cada una de las subpartes
que estas incluyen o
no Cómo podemos hacerlo aquí como
prefiráis no hay ninguna Norma que sea
mejor que
otra en mi caso yo suelo generar eh
subestructura Si veo que los elementos
Pues bueno pues tienen una estructura
que lo merece es decir si solo voy a
tener un par de casos de uso de la
aplicación con una única con un único
repositorio y una entidad con tres value
objects Pues para eso quizá no merece la
pena eh generar sub eh directorios o
subestructura en el caso de que eh
nuestros dominios sean más grandes
nuestras entidades sean más mayores son
mayores Bueno en ese caso pues Quizás sí
que puede ser necesario en en este caso
Yo a lo largo para seguir una
metodología dentro de las clases yo sí
voy a ir generando esos subdirectorios
asumiendo de que lo que estamos
desarrollando Pues bueno pudiese tener
luego muchos adaptadores pudiese tener
luego mucho contenido no entonces en
base a eso voy a crear el subdirectorio
Pero insisto si os sentís más cómodos no
eh subdividiendo tanto el contenido
también podéis hacerlo sin ningún
problema bien hemos tenemos Entonces ya
eh entendida Cuál va a ser la estructura
de trabajo ya sabemos cómo vamos a ir
ubicando cada uno de los elementos
dentro del directorio src bounded
context dentro de bounded context los
diferentes eh dominios con sus este
application lo escrito
mal Ahí está con sus eh infraestructura
dominio y aplicación representando a
cada una de las tres capas y luego ya
dentro de cada uno de ellos como queráis
podéis colocarlo todo dentro o podéis
también generar subestructuras como
estoy haciendo yo aquí muy
bien primera pregunta que os puede
surgir en este punto y es Eh bueno pues
una de las cosas que podemos apreciar es
que la estructuración de cada uno de los
elementos necesita de múltiples carpetas
No es simplemente un fichero o lo que
sea sino que tenemos que colocar
diferentes eh directorios con
subdirectorios etcétera y esta tarea se
puede hacer tediosa
entonces Cómo podemos
eh acelerar esto bien os voy a dejar
en en el la descripción en la cajita de
descripción un comando que he escrito
para que nos genere toda esta estructura
de código sin necesidad de que tengamos
que estar haciendo cada uno de de los
directorios cada vez os voy a explicar
cómo funciona por si queréis utilizarlo
si no queréis utilizarlo pues no pasa
nada podéis hacerlo también como
prefiráis podéis crear vuestros
directorios lo que más cómodo os resulte
pero yo os lo voy a pasar porque es muy
tedioso tener que estar creando
directorio directorio directorio a veces
estos directorios Pues nos podemos
equivocar como me ha ocurrido a mí
anteriormente y tener un error de
tipográfico o lo que sea y para evitar
todo eso pues os voy a dejar ahora un un
comando para utilizarlo lo primero que
voy a hacer antes de nada eso sí
recordad que en la versión eh 12 del
arabel la parte de appi no nos aparece
instalada por defecto Así que vamos a
instalarla El Comando install Api
siempre lo pongo al
revés muy bien para dejarla eh instalada
sin la sección De Api para que este eh
esta infraestructura del arabel pues lo
soporte que recorda que ahora desde las
últimas versiones Hay que hacerlo
manualmente no viene en el scaffolding
inicial muy
bien Esto Ya termina Por
aquí sí vamos a migrar todo lo
necesario y vamos a poner el Trade en el
modelo de
usuario para dejarlo ya totalmente
instalado
como ya sabéis hacer aquí nada
nuevo muy
bien y ahora que tenemos esta parte De
Api como decía ya tenemos eh sabemos
Cuál va a ser la estructura que vamos a
desear generar Así que os voy a enseñar
ese comandito que tengo por ahí me lo
voy a traer a este proyecto y eh si
queréis usarlo Pues a vuestra
disposición queda
[Música]
muy bien ya tengo por aquí El Comando
que tengo creado para esto eh lo podéis
importar desde desde el repo que tenéis
en la descripción para os lo podéis
traer Y si queréis hacerlo manualmente
es muy sencillo en
App directorio console si no está lo
creáis directorio commands si no está lo
creáis y dentro
fichero del Comando para poder usarlo
este Comando es muy sencillo simplemente
os el la firma es decir lo llamamos con
make do. ddd y ahora nos va a pedir dos
elementos en primer lugar el bounded
context donde tiene que crear el la
estructura y si no existe la creará Y en
segundo lugar la entidad que debe crear
hagamos un ejemplo nosotros por ejemplo
aquí tenemos en src Pues tenemos la
sección platform y aquí tenemos por
ejemplo curso diploma y usuario No pues
vamos a suponer que tuviésemos otro que
fuese por ejemplo pues el contexto de
compra por ejemplo de purchase no vamos
a hacerlo si yo ahora digo php artisan
make do pun ddd que es como se llama el
El Comando que os estoy pasando y a
partir de ahí le digo Cuál es el bounded
context donde Quiero crear la estructura
por ejemplo en este caso la el de
platform y dentro de platform ahora voy
a indicarle cuál es la entidad que voy a
estar desarrollando en este caso pues
hemos dicho que
purchase lo ejecutamos perfecto os
debería ir avisando por aquí de todo lo
que ha hecho vale porque eso es lo que
tengo escrito aquí básicamente os va
informando de que va creando la
estructura de que va creando cada una de
las cosas entonces veréis que os va
avisando de todo lo que ha ido creando Y
si acudimos ahora a la sección del src
platform ahora encontramos que nos ha
creado el purchase y aquí ya os ha
generado toda la estructura dentro de
infraestructura os ha creado los
controladores eventos lisen repositorios
rutas validadores que son las más
comunes puede que tengáis más además os
ha creado el archivo de rutas ya
preparado con algunos ejemplos
comentados por si queréis ya des
comentarlos y usarlos y dentro de
controladores os ha generado también por
aquí algún controlador de ejemplo y
dentro de aplicación no no os genera
nada no es necesario y dentro de domain
pues toda su estructura los contratos
que son las interfaces que vamos a estar
trabajando las entidades y los value
objects de tal forma de que a mí este
Comando cuando lo escribí lo escribí
sobre todo porque me resultaba Útil para
no tener que estar copiando directorio
por directorio una y otra vez Así que si
os resulta de interés pues os lo dejo
por ahí para que lo podáis usar pero
siempre si no lo queréis usar no es
necesario podéis hacerlo también
manualmente o acudir a cualquier otro
tipo de automatización en función al
editor que estéis utilizando solo un
punto más dentro de esta parte de de
estructuración y ya lo dejamos todo
listo y es que
em Cómo cargamos las rutas dentro de
toda esta estructura Pues bien las rutas
como bien sabéis el punto de entrada es
este de aquí el rotes punto en este caso
api.php y si os fijáis El Comando que yo
os he pasado Ya os va a crear la lectura
de vuestro fichero de rutas fijaos que
cuando cu hemos ejecutado el make ddd
pues os ha creado Aquí esta ruta de aquí
que os genera el platform purchase que
está
apuntando a la estructura que ha creado
es decir con el comando que os he pasado
no os tenéis que preocupar de derivar
las rutas pero es posible que prefiráis
hacer alguna otra estructura que
prefiráis hacer una derivación por
ejemplo que no dependa del Api sino que
queráis por ejemplo cargarla dentro
de pues por ejemplo que queréis hacer un
service Provider o un Root service
Provider para ello o que a lo mejor
queráis veniros aquí al boostrap app y
aquí donde mapea las rutas Pues igual
que mapea las rutas de web o De Api
queréis modificarle el mapeo de las
rutas para que lea directamente las de
ese directorio como prefiráis lo que sí
es importante que tengamos en cuenta es
que los directorios de rutas l arabel
tiene que conocerlos porque es el punto
de conexión Vale entonces eso eso debe
conocerlo Sabiendo eso y teniendo eso
controlado todo lo demás da igual
podemos hacerlo como prefiráis en
cualquier caso no tenéis que preocuparos
por ello porque lo vamos a ir viendo
paso a paso todo lo que hemos hecho a lo
largo de este primer vídeo única y
exclusivamente es preparar nuestro
entorno del arabel para que sea un poco
más cómodo y nos permita trabajar bien
con las estructuras hexagonales y con
ddd Entonces ahora sí lo tenemos ya
preparado tenemos nuestra carpeta src
que está siendo descubierta por el
autoload del composer y dentro de ella
Vamos a ir colocando los bounded context
con las diferentes entidades con las
tres capas la de infraestructura la de
dominio y la de aplicación Esa es la
base que tenemos que tener Clara y para
acelerar toda esta parte del proceso
tenemos este
eh este Comando que os paso por aquí que
os comparto por si os resulta de interés
para no perder mucho tiempo generando
esas estructuras de forma
repetitiva bien tenemos Entonces el toda
la base que necesitamos para poder
construir nuestros proyectos vamos a ir
construyendo
diferentes desarrollos a lo largo de
esta serie de vídeos por lo tanto yo os
recomiendo que os hagáis un Boiler Plate
con esto es decir sub subí al repo esta
parte que es común y así cada vez que
empecéis un nuevo proyecto solo tenéis
que clonar os ese boiler Plate que os
habéis creado Y partís desde ahí y no
tenéis que estar haciendo todo este
proceso una vez y otra vez de hecho os
recomiendo que en este boiler Plate añad
todo lo que os pueda resultar
interesante no solo esto por ejemplo si
queréis Añadir la documentación de
scramble o si queréis hacer eh añadirle
alguna implementación de panel de
administración cualquier filament lo que
sea todas las cosas que siempre usáis
dentro de vuestro desarrollo o que son
comunes ubicad lasas ya Dentro de este
boiler Plate y así cada vez que
empecemos a desarrollar lo único que
tenéis que hacer es clonar ese proyecto
base y ya tenéis toda la estructura para
comenzar desde ahí Muy bien pues tenemos
todo preparado como decía el siguiente
lunes tenemos el el segundo vídeo de la
serie Espero que os resulte de interés a
toda esta línea A toda esta serie si os
interesa de verdad toda esta parte pues
dadle apoyo ya sabéis que todos los
likes suscripciones y todo eso siempre
se aprecian mucho y nos vemos en el
siguiente vídeo yo me voy a trabajar a
programar
[Música]
you
