estás cansado de crear proyectos y no tener una base donde empezar tienes un print field y no sabes por dónde atacar y codel y os trae la solución madre mía con esteroides de la tienda pero en este vídeo que es un vídeo especial porque porque vamos a proponer una forma de estructurar vuestros proyectos y orientado a desde de arquitectura hexagonal y demás y además lanzamos una herramienta opensource para ayudar en el proceso entonces primero ràpita herramientas lanzar esas herramientas rapidísimo muy rápido de la mira cómo se escribe project en base ante de skeleton de cognitiva
hay lo veis se basa todas las dependencias y te deja ya un esquelético hay de rico rico jerarquía de directorios para que puedan empezar a programar con unas clases base suite de test y tal y de forma interactiva el libro vamos puliendo entonces vamos a analizar en este vídeo por qué decidimos esa estructura y locutorios cuál es y por lo que se particulariza así que ahora que este comando la script cabecera siempre pues ya acaba el script importantísimo aquí la cita que el directorio nos queda nos ha creado una carpeta ese esqueleto al no haberle
puesto nada si hubiésemos puesto un argumento al final del compost del crit project pues hubiese claro en ese nombre perfecto entonces vamos a este directorio y si entonces miramos a ver lo que tiene el directorio vemos la estructura así base un poquito sucia por carpeta vendor que no queremos verla pero lo otro sí perfecto en recordando este vídeo se está publicando hoy jueves porque la semana que viene publicamos ya el curso de ddd en php incógnita pero tenéis en la descripción del vídeo cuando salgan cursos un descuento por lanzamiento del curso de cinco euros gratis
por vuestro periodo del mes y tenéis pues obviamente todos los cursos de de solita arquitectura hexagonal que corre ese evento en a que tus ricos en pro punto cóctel y entonces vamos al tutor primero porque esta estructura de directorios rafita estaba para antes nada decir que esto es un poquito un modo repositorio entonces aquí ya vemos que tenemos hoy en la meta apps no es la típica de abdel estables cosas no te es en plural una ese y aquí está moviendo que tenemos la aplicación la aplicación de modo que es más o menos queremos es
lo típico móvil para aprender para decirlo y cada uno tiene dentro de su aplicación de back-end y supresión de fronteras por separado es tanto recordemos es vuestra peste no el esqueleto no monta más allá que la estructura de carpeta con lo cual por nuestra parte sea también tiene un cambiarle el nombre a la carpeta y ya está entonces en una futura versión extra iremos al vamos que liderando este este create project para que sea mucho más mágico todo estando entonces vamos a darle light y vamos a ver un poco qué es esto de lo pone
entonces como ya explicamos en el vídeo que tenéis en el canal sobre bond en contextos de desde menos de 20 minutos pues ahora vamos a llevarnos al mundo php entonces rafita primero qué tipo de bienes desde el contexto nosotros en con él y los otros juegos de negocio que hagamos corbata somos de negocio tenemos la plataforma de cursos online suite aparte de esto tenemos en nuestro backoffice donde miramos médicas que reciclan gente de ti que es sabia tontas y tal después está la web que la web cuenta con sus secciones por ejemplo de últimos cursos
destacados últimos cursos futbolísticas cosas de blog perfecto esto es para situarnos un poco a nivel del dominio del que tenemos que realizar esa aplicación y definir eso poner contexto entonces rafita como como para traducir y amos todo ese dominio en estructura carpetas que aplicaciones que es una aplicación que es un monte con tetera esto lo vimos en el curso de td aplicado aquí tenéis el enlace pero vamos a hacer un repaso rápido para ponernos todos en la misma página y a partir de ahí ver un poco cómo nos queda la estructura entonces tenemos lo que
es el primer bond con exactamente lo que hemos identificado que tiene sentido como unidad lógica dentro de nuestro negocio es la plataforma 'no que tenemos en salto esto importante donde conte se tiene reducir el jet decir no que se tenga que traducir cuando encontré se deriva de traducir la estructura organizacional que tengamos en nuestra empresa las unidades de negocio los equipos que trabajan en distintos verticales se traducen en bond en contexto entonces es la aplicación quien mapear los conceptos del mundo real en todo en el mundo real tendremos ese equipo encargado de la plataforma de
curso y luego se pone en contexto más después el de backoffice como hemos visto que esto es lo típico de los pendientes de ostras en mode los estudiantes de modo que tienen en el tributo es pervak office que queremos que tengan la vida es porque quieren filtrar que es lo que sean porque ésta puede haber estudiantes demo y estudiantes backoffice es perfecto que más recetas por último tenemos el blog en el blog que contente el blog donde están los post la gente de contenidos pública como ese contenido digamos que esto es una hipotética versión súper
avanzada de colectivo entonces dentro de cada uno esto ponen con tres estructuran en módulos o sub domain / establecen en estos módulos pues tendríamos en el caso de la plataforma de cursos porque si los vídeos que si los cursos los estudiantes las lecciones que hay y en el backoffice pues más de lo mismo pudiendo éstos ser coinciden osa pudiendo coincidir con los demás o no o tener cosas nuevas como el exactamente o que en lengua cúbico hubiese cambiado quizás en el blog lo que aquí llamamos estudiantes en box se llama usuario exacto exacto después vemos
las aplicaciones que cargan todo esto porque claro no es lo mismo el frontal que me sirve todo el html y javascript a nuestro back-end que lo que tiene son las app los consumidores que van actuando por detrás en tanto esto como explicamos en el curso de en profundidad y con mucho más detenimiento aquí vamos al turrón porque queremos llegar al tema de la estructura directorios está la diferenciación entre lo que sin ningún cuando encuentre si lo que es una aplicación repita porque las aplicaciones están fuera del opón de contexto por lo que podemos decir por
ejemplo imaginaros que tenemos la aplicación que es sólo el frontal que tienen los los sabes que javascript css html que llamando nuestra piel está aquí no conocen nada de nuestro cómo está picado en php o en escala o con disney lo que sea nuestro código entonces esto aquí eventualmente podremos ya está sacarlo de este repositorio y crear un repositorio nuevo entonces no tiene nada que ver en la aplicación con el código código es decir las aplicaciones serían los puntos de entrada los controladores sin más ni menos lo que reciben las peticiones de los usuarios finales
u otros servicios por api o lo que fuere pero lo que responde a necesidades protocolos de comunicación con los usuarios finales eso es la aplicación que por debajo va a ser la magia que necesite para y acabar haciendo peticiones de queries o comandos o simplemente ejecutar casos de uso sin crs de los distintos donde contextos que implique ese caso de uso de ese control en ese pues esa home que necesitaba en los últimos cursos publicados los últimos blog por publicar este trámite y las cosas están para pensar la forma fácil de pensar de porque está
fuera de esto lo puede sacar a otro repositorio de git diferente está ahora a nivel de repositorio es bueno faltan las aplicaciones de back office hay la diseñan igual una válida de front end y este nivel es historia podemos tener lo que llamamos el mundo repo que tenemos todo junto en un repositorio que es lo que nosotros proponemos poder más fácil de gestionar si siempre y cuando sea un lenguaje tal y es lógicamente ofreciendo esta herramienta que descargarlo pero también lo podríamos tener separados por repositorios por separado porque ostias la parte de modo que lo
hacemos en pcp la parte de back office y la hacemos en java perfecto y demostraría la parte del bloque se quedaría fuera porque partimos del hipotético escenario en el que solo externalizados a una empresa antes externa que se encarga un poco de sal del desarrollo del blog con lo que fuere entonces eso ya no quedaría nuestro repositorio perfecto entonces ahora ya sí que empezamos a ir a un poquito más como que de esto estructurado en salto aquí tenemos el ejemplo centrémonos en el caso del bank the context de la plataforma de cursos y tenemos todos
los módulos ahí que si cursos paz en retención ratings y las aplicaciones entonces esto como se traduce en árbol de directorios primero aquí tenemos lo que sería la raíz de nuestro proyecto que tendría la carpeta de apps aplicaciones que contendrían estate acá abajo src que contendrían todos los pones con tres y luego tenemos la carpetita de test significando siempre el objetivo de la carpeta de test tal y como la plantean es significar es decir reproducir lo más directamente posible la carpeta raíz es decir nos encontramos a su vez apps y src esto parece una detalle
sin importancia pero es importante y esto lo vamos a llevar a cabo incluso con lo que luego veremos de las distintas capas de nuestra aplicación módulos etcétera entonces continuamos exactamente entonces vamos esto se expande y miramos creo que hay entonces dentro de apps tenemos aquí las aplicaciones que hemos dicho backoffice y era de cada una que ni su frontera y después de así dentro de test estamos modificando esto como un producto significando que sea 11 si dentro de action pac office dentro de text apps tenemos backoffice que test habrán dentro de esta carpeta apps también
tiene colores es curioso porque dentro de apps lo bueno es que apps hemos dicho que es la capa de comercio http entonces vamos a testear esto vamos a testear la comunicación http situ y jádson si tuviéramos cualquier test más en tu en iría dentro de aquí hay santo esto es algo que explicamos en el curso de textil en las distintas tipologías de test y qué capas de nuestra arquitectura de software testear cada una de estas tipologías aquí estaremos hablando de una tipología de test de aceptación en tu en caja negra donde nosotros interaccionamos con nuestra
app y al igual que interacción haría un usuario en el caso están hablando de un back end es decir con su app y perfecto señor bajos y gas después significamos a la carpeta y se rctv aquí cada bound en contexto que hemos dicho antes cada contexto tal y como está estructurado esta unidad de negocio y además te guste ser kernel que se suele decir que lo compartido es ese acto de infraestructura que vayan a tener todos los contextos lo metemos aquí y todo el dominio como el típico yusidey que lo tienen todos los contextos pues
también aquí dentro importantísimo tendremos tanto infraestructura la típica clase div y conexión para establecer los parámetros de conexión que cada vagón de contes tenga su instancia independiente porque cada donde contéis tendrás su infraestructura independiente pero digamos que la clase en sí sería la misma luego irían ser pero eso es ser de infraestructura luego tendremos ser de dominio con las clases que haya comentado rafa su presencia sin lógica de negocio como por ejemplo el valor de t y friday pero lo que sí que no tendremos en ningún caso son casos de uso compartidos es decir capaz
de aplicaciones enseñar en aplicación application dentro es ser un chiste exacto entonces y ahora entramos en alguno de estos ponentes que nos encontramos rafita muchas y que ya tenemos nuestros módulos de cada va de contexto aquí básicamente están viendo lo que tenemos aquí en modo que en verde ciento pues le hemos materializado en nuestra estructura de carpetas démonos cuenta que esto es uno de los propósitos que cumple esta que esta definición de jerarquía de directorios y es el mapeo digamos obvio y que salta a la vista explícito con los conceptos de dominio aún no hemos
hablado nada de la arquitectura ni del framework que usamos ni de nada justamente en un modificado el digamos en la estructura de un proyecto symphony o usando el micro kernel para que el proyecto que nos cree ya permita estas pequeñas ajustes a la hora de estructurar el proyecto como nosotros queramos y no como el framework decida entonces en la estructura de directorios habla de conceptos de nuestro dominio para que para que sea mucho más fácil encontrar los puntos donde queremos finalmente modificar añadir features o lo que sea y justamente también para poder encapsular esos módulos
y luego promocionan los awac de contexto como luego explicaremos en el curso interaccionar con ellos y demás exactamente entonces y ahora si centramos más dentro de un módulo tenemos la carpeta de application 2003 y esto lo tendremos por cada módulo que tengamos y lo mismo esto va a estar significado dentro de la parte de test en salto importante y dijimos y le das una masa y lo veremos aquí tenemos en la carpetita de test justamente también el botón contexto el módulo y las tres capas entonces aquí en la pregunta después atrás pero qué tipología d3
metemos en cada una de estas carpetas muy sencillo hemos dicho que los test de aceptación en to end ya nos metíamos dentro de la carpeta apps entonces lo que nos queda es ubicar los tres unitarios de la lógica de negocio de nuestra obligación es decir de los casos de uso y estos casos de uso también los conocemos ya como application service luego en la carpeta application estaremos teniendo los tests de la carpeta application que tenemos en producto está el modificado está muy guapo tiene modificado y lo mismo con los tests de infraestructura tenemos nuestro ser
repositor y dentro de infraestructura pues nuestro ser opositor y test estará dentro de infraestructura en los textos exacto entonces recordemos que son tests ya de la implementación concreta uno de los adaptadores es decir serían en este caso pues macy's google news el repositor y test y luego en domain que tendremos las citas de test en donde inditex y tendremos los o bien como there's por ejemplo si tenemos yo soy de dentro de domain aquí tenemos un modelo exacto es decir las clases que nos sirven para generar valores aleatorios o para generar valores con distintas particularidades
por ejemplo dame un usuario que es administrador pero me da igual que identificador tenga qué nombre tenga todo eso digamos son las factorías de test también conocida como big mother porque tienen otras particularidades como analizamos en el curso de textil y todo eso iría aquí en la carpetita domain perfecto gráfica aquí también importante decir ahí es bastante estándar en el mundo de dvd que en lugar de ser una una prosa sin de carpetas entender es lcd por ejemplo el contexto de moke y dentro de ya directamente carpetas application domain infraestructura y dentro de cada application
carpeta por capa modo logró dentro de tomé en carpeta por cada módulo dentro tras tutor carpeta por cada módulo queda un poquito raro de ver pues no está tan cohesionado todo lo del módulo que abrí carpeta está todo paralizado a nosotros pero tenemos bastante más este producto donde tienes cada módulo y en movilidad auto que tiene todo dentro del módulo además de esta forma una de las cosas que benefician justamente en la separación clara de qué módulo interaccionan con cada módulo simplemente con ver la estructura de pacache name your name spaces y en caso de
que un módulo como vídeos esté adquiriendo mucha lógica y oye que hemos visto que esto es más complejo de lo que inicialmente pensábamos vamos a dedicarle un equipo de trabajo únicamente a esto de los vídeos oa las notificaciones dentro de mont pues vamos a hacer un equipo de gestión de interacción con usuarios y eso por tanto va a tener su propio cuando es con test con sus propias infraestructuras para poder escalar mucho mejor y para que sea independiente del resto de módulos esto sería este proceso de promoción sería mucho más fácil si ya tenemos encapsulado
todo lo referente a ese módulo dentro de su carpeta y no es partido entre distintas carpetas de application domain o infraestructura totalmente queda mucho más simple de esta manera pensando entonces dale ahí ya la estructura final y vamos a jugar un poco aquí tenemos la estructura final vemos cómo quedan las aplicaciones cómo queda src con estos distintos ponen contexto dentro de aqaba bonet context cada uno de los módulos y ya decíamos dentro del módulo finalmente las tres carpetas de nuestra arquitectura de software para arquitectura hexagonal en ese curso completo jugamos un poquito con el código
de jugamos un poquito vamos a la base carl vamos aquí tengo mi atajo para brillante y jeji a lo rápido perfecto punto intelligent este salto la estructura de directorio ya hemos hecho bastante énfasis en este vídeo simplemente vamos a ver las particularidades del proyecto que genera este esqueleto que simplemente decíamos es compos script project con itv barra ente desde guiones con boxer que empezamos por el consell jason o leemos simple como pues luego de este proyecto que te quiero crear con las mínimas dependencias necesarias que hay por aquí entonces si nos fijamos en las dependencias
que tenemos tenemos php más grande de 7.2 unas extensiones básicas pero después me tenemos también tracción con base de datos con doctrine y éste ayuda mejora la performance pero de aquí de detención dependencia estemos en franco urban del que estoy quien nos proporciona en el container la capa http el micro que estamos hablando un poquito antes el de la derecha de tótem que para poder cargar configuraciones que tengan punto ems y por último el symphony llamen que esto es curioso porque montando el proyecto dices ostias es el freno urban del que ya trae el container
pues ya me cargan los ficheros en cambio en tira hace falta meter a dependencias principales inflamen porque ellos tienen interacción pero si no está dependen ciento ese activo amigo entonces aquí interesante ya está no tenemos más dependencias para la producción y estas son las dependencias mínimas que necesitamos para montar una api http digamos y poder tener ese http fundation por ejemplo para definir el sistema de rutas y demás entonces vamos a ver bueno aquí tenemos el mapping queremos ser más bien aquí está curioso porque claro al tener cada aplicación por separado con sus eres src
pues qué aplicación tiene tsunamis por separado y luego usted declaró aquí pero entonces y ahora vamos a ver el controlador que dejamos ya para simplemente tener que rellenar los huecos por así decirlo por vuestra parte a quien mucho y tenemos embarque src controller help check entonces aquí tenemos pues eso revisión del estatus de que la api está está levantada y devuelve opciones están hechas un control de asia service o sea no extiende de nada de symphony de nada del área verde nada de nada sino que son una clase plana sin dependencias externas - pues esta
ley pues desinfla a la cual para enseñar cómo se pueden hacer electo dependencias vienen inyectado un plantón al vertido de hábitos que esto la vida arriba de ugt cuando lo haríamos pero esto es para hacer la demo y el cual después ya tenemos definido este control de su ruta dentro de nuestro fichero de rutas céntimos de rutas donde podemos que los llamen es con todas las rutas que queramos ya que decimos hoy cuando venga un paraje de check me llevas a este controlador el santo entonces con esto básicamente tenemos la base mínima indispensable para poder
empezar a estructurar y a implementar nuestro proyecto esperamos que os sirva si os sirve por favor estrellita en huichapan y en el repositorio y eso esperamos que os haya gustado os esperamos en el curso completo que continúa a partir de este vídeo sobre de php dónde haremos todas estas interacciones de vale pues nuestro primer caso de uso y todo de forma práctica es decir no es teoría de todo eso ya lo dejamos atrás lo tenéis en el curso desde aplicado eso sí y en popa nos vamos a centrar en los pequeños detalles del código y
el código avanzar motor de un proyectito y ver qué pasa en salto entonces campanitas o sky fly poquito de todo y nos vemos la semana que viene hasta ahora [Música]