---
title: 'Live : Architecture Hexagonale en PHP'
source: 'https://youtube.com/watch?v=_jR8eUlNqK0'
video_id: '_jR8eUlNqK0'
date: 2026-06-15
duration_sec: 0
---

# Live : Architecture Hexagonale en PHP

> Source: [Live : Architecture Hexagonale en PHP](https://youtube.com/watch?v=_jR8eUlNqK0)

## Summary

This live stream explores hexagonal architecture (ports and adapters) in PHP, focusing on its principles and practical implementation. The host demonstrates building a blog post creation feature using domain-driven design, test-driven development, and dependency inversion to decouple business logic from infrastructure concerns.

### Key Points

- **Introduction to the live stream** [00:00] — The host explains the format: sharing topics he is currently learning, including DDD, TDD, and hexagonal architecture. He acknowledges that his understanding is evolving and welcomes feedback.
- **UUIDs as identifiers** [06:00] — UUIDs allow generating unique identifiers without a database, enabling testing and development without a persistent store. They are useful in TDD where you start without a database.
- **Domain-Driven Design (DDD) basics** [09:00] — DDD emphasizes organizing code by business domain rather than technical layers. The host focuses on the concept of grouping code by functionality (e.g., blog, authentication) rather than by controllers, models, etc.
- **Test-Driven Development (TDD) overview** [14:00] — TDD involves writing a test before any production code, then writing just enough code to pass the test. The host notes that TDD requires a mindset shift and recommends resources like the willdurand community.
- **Principles of hexagonal architecture** [16:00] — The core idea is separation of concerns and decoupling. Infrastructure (frameworks, databases) should be details; the business logic (the hexagon) should be framework-agnostic and testable.
- **Benefits of hexagonal architecture** [21:00] — Delaying technical decisions, ease of evolution (changing frameworks or databases without touching business logic), and improved testability.
- **Live coding setup** [28:00] — The host sets up a PHP project with pest (testing library), phpunit-watchers (auto-test on file save), and creates a domain folder structure organized by feature (blog).
- **Writing a use case test** [37:00] — The host writes a test for creating a post, defining the expected behavior: a CreatePost use case that takes post data and returns a Post entity.
- **Implementing the CreatePost use case** [44:00] — The CreatePost class is created in the 'usecases' folder. It receives a PostRepositoryInterface (a port) via constructor injection and uses it to save the post.
- **Creating the Post entity** [53:00] — The Post entity has properties: title, content, publishedAt (nullable DateTime), and a UUID (generated via uniqid if not provided).
- **In-memory repository for testing** [59:00] — An InMemoryPostRepository is created in the test folder to simulate a database. It implements PostRepositoryInterface and stores posts in an array.
- **Introducing the port (interface)** [64:00] — The PostRepositoryInterface is defined in the 'ports' folder inside the domain. It declares save() and findOne() methods. The use case now depends on this interface, not a concrete class.
- **PDO repository implementation** [71:00] — A PdoPostRepository is created that implements PostRepositoryInterface using MySQL. It uses PDO to insert and select posts, demonstrating that the use case works with a real database.
- **Validation with lazy assertions** [88:00] — The host adds validation to the CreatePost use case using the 'beberlei/assert' library. If data is invalid, a custom InvalidPostDataException is thrown.
- **Creating a controller in the infrastructure layer** [101:00] — A CreatePostController is built in the 'infra' folder. It handles HTTP requests, uses the CreatePost use case, and returns a response. This demonstrates the separation between domain and infrastructure.
- **Conclusion and recap** [114:00] — The host summarizes that the domain folder is the hexagon, and the infra folder is the outside. The architecture allows easy swapping of frameworks and databases.

### Conclusion

Hexagonal architecture enables building business logic independently of infrastructure, making code more testable and adaptable to change. The live coding demonstrated a practical implementation with PHP, showing how ports and adapters decouple the core domain from frameworks and databases.

## Transcript

donc oui comme quelqu'un l'a dit dans le
chat ça ressemble un peu aux premières
séries qualifié anthony beck alors
l'idée c'est vraiment de vous montrer
des choses sur lesquelles je suis en
train d'évoluer en ce moment des sujets
qui me trotte dans la tête depuis
quelques années quelques mois et que
maintenant j'ai le temps de mettre en
oeuvre d'essayer de comprendre et c est
alors bon on va partir d'un principe
tout ce que je vais dire et quand même
sujet à caution puisque c'est des choses
que j'apprends c'est jeu j'essaye de
d'être le meilleur possible
j'essaye de bien comprendre ce qu'on me
raconter tout et d'ailleurs il faut que
je remercie beaucoup les gens qui sont
sur twitter qu'ils sont heureux sur mes
réseaux sociaux et qui m'aident dans ces
sujets là donc non seulement me donnant
des lectures dans des vidéos
après évidemment je vous donnerai des
ressources et vous allez voir le
sommaire de tout ce dont on a parlé
alors deux poids on va parler
aujourd'hui
qu'est ce qu'on a ici montrée moins ça
alors aujourd'hui on va parler
bon en gros de l'hexagone et de tout le
reste de tout ce que je suis en train
d'étudier en ce moment alors qu'est ce
que c'est que cette histoire d'exagon
qui d'ailleurs a priori est un hexagone
que parce que on a choisi sa
arbitrairement
merci g n pour ta motivation et ta
bienveillance à sablé plaisent et donc
on va discuter de tout ça donc l'idée
encore une fois c'est de vous montrer
qu'est ce que j'apprends je pense que
c'est une série qu'on va faire vrai mais
je pense pas une fois par mois ça serait
bien de voir un peu différent nouveau
sujet que je découvre et dont je discute
avec vous donc n'hésitez pas s'il ya un
souci
vous me le dites si je dis une grosse
connerie vous le dit et alors sur tout
ce qui est intéressant c'est que
j'espère que la vidéo même ceux qui
peuvent pas la voir en live doctorale
d'autres qui sont calés la verrons plus
tard c'est sûr que je vais envoyer dans
différentes chanel cela que je fréquente
pour qu'on me dise oui où j'ai foiré où
j'ai pas compris
alors du coup les intérêts du moment les
intérêts du moment c'est en gros qu'est
ce que je suis en train d'étudier entre
man et ça faisait un petit moment on
voit ici des sujets qui traîne depuis
quelques années sur youtube c'est des
sujets que ça ferme tout le monde
j'aimerais bien voir les étudier et
alors notamment en tout premier un petit
sujet l'utilisation du
des alors les une idée on va voir deux
secondes ce que c'est mais j'ai compris
du coup dernièrement pourquoi on
utilisait salon il ya plein d'autres
raisons mais j'utilise j'utilise des eu
l'idée depuis quelques temps et j'ai
compris pourquoi ça serait bien d
utiliser donc je vais vous expliquer un
peu de quoi ça parle
alors d'aider des bons domaines dreams
and design donc ça c'est un truc qui
traînent en gros le mec a écrit son
bouquin eric evans choix qui s'appelle a
écrit un bouquin sur le dd d une façon
de concevoir vos projets en termes de
développement et donc ce qui est écrit
en 2004 pour vous dire donc moi j'étais
en 2004 et en bac +2 et alors évidemment
on n'a jamais parlé et ensuite dans les
autres entreprises où j'ai travaillé et
puis ensuite quand j'étais freelance et
quand j'étais chef d'entreprise et quand
j'étais au sri lanka évidemment on n'a
pas l'occasion particulièrement de
rencontrer ce genre de terme genre tout
ça ça a du sens dans de gros projets et
sûrement d'autres des puristes vont bien
ça a du sens aussi dans les petits
projets graduation mais met donc si vous
êtes puristes déjà partie du passé vous
avez choqué pendant toute cette vidéo ça
c'est sûr voilà commencez pas à casser
les bonbons
vous allez être choqué c'est pas grave
et donc le ddd c'est une organisation de
votre code et de votre est plutôt de
votre façon de penser votre projet et
donc on va en parler un tout petit peu
mais moi je vais pas parler du concept
de ddd avec les bandits de contexte et
c'est ça je suis pas du tout encore mais
plutôt dans l'organisation de notre code
ça m'intéresse alors au niveau ensuite
bien sûr
vous savez c'était mon dernier live je
m'intéresse beaucoup en ce moment au
test driven development talent acceptant
16 riven développement trop bieker
driven development donc tout ça c'est
des méthodologies d'accord de
de création de code dont le but est de
faire émerger le code via le test à
différents niveaux de tests etc
mais le but c'est vraiment d'écrire du
code après avoir éveillé des
spécifications on teste ça aussi on en
reparlera et du coup on en arrive au
sujet du jour la clean architecture ou
l'hexagone à l'architectural attention
pour les puristes encore une fois je
sais bien que c'est pas les deux
forcément d'accord les deux même si j'ai
bien compris donc on a là l'hexagone
architecture qui est quelque chose qui
date des années 2000 grosso modo et je
sais plus déjà qui est la personne qui a
proposé cette architecture ou l'
architecture port adapteur on va en
parler et on a ensuite la clean
architecture qui a été proposé par
l'oncle bob si j'ai bien compté plus
tard dans les années 2010 seront autour
de 2015 mais franchement voilà je suis
pas un bibliothécaire vacances chez pas
qui a fait quoi quand on s'en fout
l'idée c'est quand même d'avancer dans
le perfectionnement nos architectures
alors où est ce qu on en est alors oui
quand même un petit préquelle à tout ça
je vous donne quand même des petites
nouvelles sur mon boulot vraiment la
charge lente du moment c'est de terminer
ma formation symphonie 5
on est à peu près sûr 20 heures de
contenu comme la première alors
l'association n'est pas partis sur un
build on n'est pas parti sur du airbnb
on est parti sur les commerces
je voulais voir la notion de paniers
dans la session je voulais voir la
notion de stripe dans vos applications
symphonique alors c'est une application
que fin c'est une formation pardon que
j'ai design et pour les débutants et les
intermédiaires
l'idée c'est de dire il faut toujours
que des gens qui me suivent puissent
apprendre il faut pas que ce soit que
les dividendes qu'ils puissent se
rentrer là dedans et c'est sympa pour
les débutants il faut aussi que les gens
qui ont déjà fait des courses de
symphonies etc puissent encore
tranquillement apprendre des choses avec
moi et donc ici vraiment l'un sur
l'autre on est sur une approche vraiment
différent de la première formation qui
avec beaucoup de recul j ai regardé la
première formation symphonique a déjà
les plus à jour et surtout j'ai
l'impression que moi ma façon
déjà quatre ou cinq sessions de
symphonies anguilard depuis ma première
formation
j'ai vraiment remis en place de nouveaux
concepts pédagogiques pour apprendre
avec mes apprenants et donc j'ai vu ce
qui marche et ce qui marchait pas
vraiment là je suis parti dans une
approche différente où on va aller en
profondeur dans symphonie tout en
restant mal de l'époux accessible à tous
et donc en apportant autant aux
intermédiaires qui ont fait déjà un peu
de symphonie que aux débutants qui en
ont jamais fait donc voila mon idée
c'était vraiment de partir là dessus ça
c'est un truc qui sera finie dans
quelques temps et bah quand ça sortira
vous serez les premiers au courant non
sur youtube évidemment vous serez les
premiers au courant
donc on peut passer aux premiers sujets
d'intérêt du moment donc les sujets du
moment ça va être donc les fameuses une
idée qu'est ce que c'est ça je viens de
passer deux heures mais on va les
utiliser dans le live coton juste
derrière alors qu'est ce que c'est que
cette histoire du idée alors eu une idée
le but c'est de donner un identifiant
vous savez quand vous créez souvent un
projet vous avez je sais pas moi vos
entités en gros vos données que vous
mettez dans des tables de base de
données est souvent leurs identifiants
c'est juste un automne très long c'est
un numéro que la base de données va
assigner automatiquement à un
enregistrement
ok alors quel est le problème avec ça le
problème avec ça c'est que vous devez
avoir une base de données pour que vos
enregistrements est une identité est
quelque chose qui nous permet de les
identifier
problème quand vous faites par exemple
justement du test driven development
quand vous commencez par tester des
choses etc vous commencez sans base de
données pourtant il vous faut malgré
tout bain
malgré toi un moyen d'identifier et
donnait alors je sais bien que c'est pas
le seul je sais que c'est pas de la
seule raison pour laquelle on peut
utiliser les humides et ya plein
d'articles vous en donnerai
éventuellement mais néanmoins mans c'est
là que ça m'a choqué c'est quand je me
suis dit je me suis mis à faire du test
driven development que j'ai commencé à
coder une fois que j'avais écrit et stg
commencé sans environnement donc sans
base de données sans rien et donc je me
suis dit comment est ce que je pourrais
simuler le fait que ben je sais pas si
je fais un blog par exemple que mes
articles et un identifiant alors qu'il
ya pas de bases de données
pour l'heure à signer et c'est là
effectivement une gigue mais c'est ça
fait des années que je vois parler d'une
idée est ce que c'est pas le moment
justement de les utiliser
donc c'est eu l'idée ce sont des
identifiants uniques qui vont pouvoir
être générées et donc que vous allez
pouvoir assigner vous même à vos
enregistrements sans aide aucune base de
données l'avantagent c'est quoi c'est
que vous allez pouvoir du cours donnés
un identifiant à des objets avant même
de la base de données n'est pas le faire
et alors l'autre avantage c'est que la
base de données elle peut très bien
gérer ses identifiants qui sont des
longues chaînes de caractères ont pas
forcément longue mais en tout cas qui
sont des chaînes de caractères va
pouvoir les gérer comme des clés
primaire donc comme des identifiants
donc ça aussi c'est un sujet très
intéressante que j'ai commencé à
regarder et et du combat que je me
demande qu'est ce que vous en pensez si
jamais vous avez un peu de un peu de
retours d'expérience là dessus moi
j'avais jamais utilisé ça mais c'est
vrai que maintenant que je fais du valat
que je me tantale hexagonal etc etc
ça fait toujours plein n'hésitez pas
donc hop je vais revenir ici bougeait
pas une seconde c'est un réglage mixage
et j'arrive avec vous tapez tac tac il
est où ce compte il est là il
la voilà l'idée c'est pas non plus que
la musique est mon casse les couilles je
la baisse si ça vous emmerde
voilà donc l'idée c'est de pouvoir
identifier des objets avant même que la
base de données n'est donné un
identifiant à ces objets là et donc ça
veut dire que vous pouvez connaissant
base de données et vous faire plaisir
avec alors mon prochain sujet prochains
sujets d'intérêt tak tak donc le ddd
mais attention pas le dvd au sens où on
l'entend vraiment passagers par le cor
étudier je vous dis j'ai pas commander
le livre le livre franchement il a l'air
de faire 800 pages ça doit être un enfer
pour un mec comme moi qui ne sait pas
dire
donc voilà par contre j'ai vu un
milliard de conférence j'ai eu 1
milliards d'articles
donc voilà ça fait plaise mais je vais
pas vous parler du concept de ddd en
lui-même c'est-à-dire toute
l'organisation tout le mindset qui a
derrière le fait de discuter avec son
client on le fait d'avoir des langages
ubiquitaire le fait d'avoir des
contextes et c'est tout ça vous pouvez
l'étudier par vous même
en plus je pense sans vraiment je pas
vous d'accord personne ne prend rien de
mal ici mais je pense pas que le public
principalement sur ma chaîne soit entre
guillemets à se poser ce genre de
question pour l'instant par contre il y
a quelque chose qui m'intéresse dans
cette philosophie entre guillemets dans
cette seconde architecture qui rappelle
aussi les architectures used guys driven
architecture en d'accord donc l'idée ici
vous êtes d'accord avec moi vous faites
du symphony par ailleurs c'est du
symphony vous faites n'importe quel même
le fera mourir fait du lard avaient fait
n'importe quoi vous allez avoir un
dossier contrôleur zèle avoir un dossier
modèle vous allez avoir un dossier en
titillant dossier repositories est en
fait vous voyez que on a tendance
on a en fait tendance à regrouper les
éléments de notre projet les éléments
techniques donc nos classes on a
tendance à les monter par technicalité
salir par leurs caractéristiques
techniques mans va mettre tous les
contrôleurs dans tel dossier
tous les modèles dans tel dossier toutes
les entités dans tel dossier tous les
ripostes ory dans tel dossier
alors bien sûr vous allez me dire oui
mais si tu as beaucoup beaucoup
trop leur site a beaucoup beaucoup de
choses à gérer tu peux aussi faire des
sous dossiers donc pas rentrer dans le
contrôleur tu peux avoir un sous-dossier
invoice avec trois contrôleurs un
sous-dossier poste avec trois
contrôleurs un sous-dossier user avec
trois contrôleurs très bien mais malgré
tout vous restez avec un dossier
contrôleur avec plein de sous dossier
vous avez ensuite un dossier modèle avec
m 2 sous dossiers etc etc et les proches
sera pas le théâtre qu'est ce qu'il ya
plus il n'y a pas de sens il n'y a pas
de qu'est ce qu'il ya dans le chat est
ce qu'il est en train de discuter vous
dérange d'al gore coach attend alors
racontez moi qu'est-ce qui va pas en
fait y'a pas de son il ya un problème
est-ce que ça lag je regarde vite fait
parce que je suis pris dans mon discours
ce qui va pas attendez je vais regarder
je vais je fais ce rôle et vers leurs
vers le haut il ya des questions dans le
tien tu vois les gars c'est pas facile
l'un de ceux dont on entendra les
questions après alors est ce qu'elle est
question c'est quoi la différence entre
les cinq versions de vider ses sacs aux
questions de troll là c'est de l'os
chrome os troller sur les eu l'idée
je n'en ai aucune idée alors j'ai lu
aussi eu lead et franchement pour
l'instant je me suis pas intéressé donc
voilà excusez moi pour les questions
donc je vais essayer de regarder le plus
le plus possible promis merci patrice
c'est très gentil de nous dire que je
suis beau vous êtes quand même pas le
barron's et des trolls parce que j'étais
concentré c'était dans mon sujet donc
tout ça pour vous dire que dans mon idée
dans mon idée là ce qui est intéressant
à prendre dans le dd dans d'autres
architectures comme les new skies driven
architecture c'est l'idée de dire 'ne
groupe et pas vos objets par
technicalité les contrôleurs avec les
contrôleurs et les modèles avec les
modèles et c'est peut-être dans l'idéal
il faudrait créer dégroupage de de
découpage de fichiers par
fonctionnalités dont parle si vous
faites un blog un groupage de tout ce
qui concerne le blog un groupage de tout
ce qui concerne l'authentification des
utilisateurs
un autre groupe âge de tout ce qui
concerne éventuellement s'il ya un
abonnement bénin facturation les
abonnements ce genre de choses
donc l'idée ça va être vraiment de créer
des dossiers qui ont un sens au niveau
on va dire comme on appelle ça la
fonctionnelle donc ce qu'on appelle une
bulle de code oui en domaine tout
simplement donc c'est ça qui a été
intéressant dans le domaine privé design
pour moi c'est l'idée de maintenir dans
notre astre dans notre implication dans
leur architecture
l'idée des différents domaines qu'on va
avoir et donc de ne pas regrouper les
choses par technicalité mais plutôt
partie sphères d'activité par domaine
donc ça c'est une chose aussi qu'on va
regarder lentilles life holding tout à
l'heure et du coup alors là maintenant
autre sujet d'intérêt savais pas ce que
j'ai déjà fait un avis là dessus
autre sujet d'intérêt ça va être du coup
le tdd donc le tdd vous avez plutôt
suivi alors ça encore une fois allé voir
la chaîne de thomas boileau pour
discuter de ça mais neil pour la clean
architecture en vous allez sur le switch
de thomas peau à l'eau thomas d'ailleurs
si tu peux mettre le lien dans le dans
le chat comme ça tu te fais plaisir
le dvd mais aussi effectivement graphic
arts qui a fait des vivres des vidéos là
dessus et alors je vous conseille si
vous vous intéressez aux tdd d'aller sur
le slack de will come avec le poteau
donc michael azerrad moi j'y suis allée
ils sont hyper bienveillant ils ont
répondu à toutes mes questions sont
vingt ans et c'est une super communauté
donc clean architecture tdd tout ça
n'hésitez pas à aller voir donc vous
allez sur will come point com est tout
en bas vous allez le lien du slac vous
avez banc mickaël qui fait des
formations là dessus aussi
bref vous allez trouver la chaîne
youtube de will come vous allez voir
plein de super sujet sur le tdd mais
alors donc le tdd de poids on parle on
parle du fait de conduire notre
développement de faire émerger une
solution par le test alors je vous le
dit on qu'on soit bien clair pour les
puristes vous avez hurlé je n'y suis pas
encore du tout mais on va quand même
travailler là dessus dans l'idée vous
n'écrivez aucun code tant que vous
n'avez pas écrit le test qui va tester
que le futur code que vous allez écrire
bas marché plus encore vous ne testez
qu'une seule la section à la fois vous y
aller petit à petit de façon à faire
justement émerger
choses petit à petit autre chose vous ne
devez jamais écrire du code qui ne soit
pas au préalablement nécessaires pour
faire passer un test au vert donc pour
ça faut déjà avoir un background en août
est un framework de tests selon le
langage tout d'utiliser comment est ce
qu'on fait du test etc etc
ensuite il va falloir et c'est à moi
j'ai déjà un petit bhagwan tests c'est à
dire si je suis nul en tests unitaires
mais quand même je sais ce que c'est un
test unitaire je sais ce que c'est des
mots que je sais je sais plus où moins
me démerder avec tout ça le problème
c'est que c'est pas que ça ce qu'il faut
ce qu'il faut c'est un mindset que j'ai
pas encore donc il va falloir que je
travaille beaucoup sur ce sujet et vous
inquiétez pas au fur et à mesure je
voudrais me reprendre où j'en suis et du
coup le problème aussi c'est que ce
fameux tdd si vous vous lancez
directement sur symphonie et l'arabe
elle
ça peut être compliqué à mettre en place
parce que vous allez commencer tout de
suite à vous dire ouais mais il faut que
j'envoie une requête http etc etc et
donc ça peut peut-être vous m'a
peut-être ça peut vous vous détournez en
fait du principe du dvd et c'est là et
c'est là qu'arrive notre fameuse line
architecture hexagonal h partie culture
peu importe de toute façon c'est à peu
près le même principe on parle ici d'une
architecture qu'on appelle une
architecture porte adapteur et donc on
va voir un peu ça dans ce live et on va
non seulement le voir mais on va aussi
mettre en oeuvre vous allez voir plus
tard qu'on va créer le code d'un petit
blog mais vraiment une action genre créé
un article juste ça juste créé un
article
on va faire un blog et on va essayer de
le faire on va essayer de faire un code
qui soit tellement générique tellement d
complet que l'on puisse le mettre autant
dans une application php native dans une
application symphonie etc etc
au revoir thomas et merci d'être passé
t'as pas le lien vers la chaîne je te
conseille de le mettre pour que les gens
aillent s'inscrire sur ta chaine
switcher la chaîne youtube mais ça dans
le chat pour que ça puisse passer pour
ceux qui se demandent ce cher monsieur
sur mon t-shirt la série bourne
donc ça c'est frankenstein junior un
film à voir absolument si vous l'avez
jamais vu aller voir frankenstein junior
c'est malik
alors quels sont les princes
de base de cette hexagonal architecture
le but ici donc
rappelez-vous dans les années 2000 on
sort des concepts comme le domaine
driven development domaine driven
development ltd
on sort aussi les architectures used
guys ces fameuses architecturaux en fait
quand vous regardez le code vous devez
savoir ce qu'il fait en regardant juste
les fiches et leur organisation
vous regardez de fichiers vous voyez
qu'un modèle blog un module 12h voyez
que il ya différentes actions qui vont
se passer
donc ça c'est la new skies architecture
et ensuite vient l'hexagonal
architecture donc une architecture port
adapteur puis dans les années 2010-2015
l'oncle bob qui écrit son livre clean
architecture dans tous les cas quels
sont les principes de base de toutes ces
architectures
l'idée principale que vous devez avoir
en tête c'est ce qu'on appelle la
séparation des préoccupations et le
découplage l'idée c'est que votre
infrastructure ça doit être un détail
qu'est ce que ça veut dire ça veut dire
que votre code d'accord votre code
représente vraiment le métier c'est quoi
le métier c'est tous les besoins qu'à
votre client votre client quand il vient
vous voir et vous dis pas jouer une api
symphonie il s'en fout en fait votre
client et vous dis moi je veux une appli
pour juin blog par exemple donnera pas
vous voir et prendre la loire pression
va pas se lâcher mais imaginons votre
client vous dira - je veux un blog où on
va pouvoir créer des articles modifier
des articles on va pouvoir publier ou
des publié un article on va pouvoir
commenter et il va vous présenter toutes
sortes de ce qu'on appelle des douze
caisses des cas d'utilisation de son
application de son besoin ça sera à vous
de dégrossir tout ça avec lui en réunion
de voir quelles sont véritablement les
actions possibles par les utilisateurs
et alors ce qui est important dans votre
code c'est ça c'est pas le fait que
didier du symphony 5 ou 6 ou 3 le bon
sens sont d'accord votre client sait
même pas ce que ces symphonies c'est pas
son problème lui la valeur qu'ils
attendent de vous sait que les actions
qu'il a demandée soit faisable et donc
votre code doit refléter ce truc là
votre code
il doit pouvoir fonctionner sans parler
de framwork sans parler de quelles bases
de données est ce qu'on fait du mungo
dbs qu'on fait du mysql est ce qu'au
contraire on s'en fout et tout est dans
un fichier ji sun on ne sait pas en fait
on 106 et donc l'idée de ces
architectures ça va être de mettre
l'accent sur la qualité de ce coeur de
code la soccer de code qui ne fait pas
appel à des bases de données qui ne fait
pas appel infra mort qui ne fait appel
que a du coeur php et a des notions
métier que vous mettez en place elle il
faut que du gros il faut que ce soit
vraiment de découpler le plus possible
dans l'idée qu'on puisse le tester un
maximum et donc dans l'idéal on va même
le créé par le test en faisant du tdb
alors bien sûr tout ça ça repose sur un
principe alors j'espère que vous allez
piger ce que je vous raconte
j'espère que vous allez comprendre ici
l'inversion de dépendances alors si
quelqu'un ne connaît pas une inversion
de dépendance il faut vous il faut vous
renseigner en fait sur les principes
solides qui ont été popularisées par
l'oncle bob aussi et donc dans ses
principes solides vous allez le dernier
qui est selon moi un des plus importants
qui s'appelle la version de dépendances
donc c'est le principe des alors c'est
quoi l'idée l'idée c'est de vous dire
que vous allez partout vous le pouvez
demander à recevoir dans vos fonctions
et s'est demandé à recevoir des
interfaces plutôt que des classes
concrètes
alors vous allez comprendre pourquoi
quand je vais vous montrer ça ici je
vous montre un schéma de à quoi ça va
ressembler l'architecturé hexagonal
alors évidemment ils ont fait un
l'hexagone vous auriez très bien pu
faire un quart et un rectangle ou oloron
on s'en fout d'ailleurs parfois cette
architecture est présenté sous la forme
de nos nyon et donc l'idée c'est ça vous
allez avoir un code et vous inquiétez
pas si c'est pas clair je vous promets
que vous allez regarder le live coding
vous allez comprendre
vous allez avoir un code qui est le code
métier le code qui met en place ce qui
est demandé par votre client est en fait
ce qu au delà il ne peut pas demander
par exemple des données à la base de
données lui ce qui va faire c'est qu'il
va demander des données à n'importe qui
qui peut lui donner des informations
d'accord alors en fait l'idée c'est
d'avoir une abstraction ce qu'on appelle
des porn qui sont à l'intérieur de votre
hexagone et ensuite une fois que votre
métier a été co n'est qu'il est terminé
vous allez pouvoir brancher n'importe
quel implémentation par dessus un
pardessus du coup ses abstractions
je sais que là ça nous semble
piqué mais si vous suivez le live coding
il ya certains pour qui se sont
compliquées d'autres pour qui font ça
depuis dix ans et qui sont en train de
dire mais en plus il raconte des
conneries ce compte
donc voilà en fait ça dépend de proue
vous êtes vous voyez pas la même chose
en regardant cette émission
donc si vous êtes débutant mais c'est
compliqué si ça fait vingt ans vous
faites ça vous prenez pour un grand
parce que je suis un débit alors on
continue
quel est l'intérêt l'intérêt ça va être
de dire moi je ne veux qu dès que mon
métier mon métier je le code comment je
le code uniquement avec mon langage pas
de notion de framwork dans mon métier je
vais codé le blog sans jamais parler de
quelconques fera moi je ne doit même pas
savoir si je vais sur du web ou pas je
dois uniquement de dire voilà on me
passe des données et j'en fait certaines
choses
j'aimais cas d'utilisation je vais les
coder je ne vais pas savoir si j'ai une
base de données ou pas donc calé quel
est l'intérêt l'interdît ça vous permet
de retarder les choix techniques premier
intérêt vous allez pouvoir retarder vos
choix techniques dire que encore dans
votre coeur applicatifs ben vous le côté
en full bhp ou en full d'afrique tout au
fond si ça peu importe mais vous le
connais que dans simplement dans le
langage sans faire appel à des concepts
qui ont qui sont de l'infrastructure
donc en gros ça vous permet d'avoir un
code qui marchent alors même que vous ne
savez pas si ça va être une application
web
si ça va être une api rest si ça va être
une application console ou une
application de bureau même si vous
faites du c# ça peut être autant sur le
web que
installé en client lourd donc vous allez
codé sans savoir exactement ce que vous
allez pouvoir sans savoir exactement ce
que vous allez faire au final
alors ça vous permet en fait imaginer ya
votre client il arrive et vous dis bah
moi je sais pas en fait si je veux pour
l'instant une api avec un front très
actes ou un site web complet
peu importe une allemande - mon but
c'est de coder les fonctionnalités que
tu m'as demandé donc je fais l'écho des
est en fait je veux faire en sorte qu'on
puisse brancher dessus de n'importe quoi
une api un client lourd un client léger
peu importe donc ça me permet aussi de
poudre de ne pas avoir à me poser la
question de comment vont être stockés
organiser mes données est ce que j'ai
une base de données nosql
ou est-ce que j'ai une base de données
relationnelle vous voyez ce genre de
choc et du coup même qu'elle fera mort
je vais utiliser
peut-être c'est pas mon problème pour
l'instant pour l'instant j'ai pas envie
de savoir qu'elle fera morte on va
utiliser parce que peut-être je vais
travailler dans une équipe où les gens
sont très très forts dans la raab est
les symphonies un peu moins peut-être
rencontrer un visa d'or symphonie zemp à
la ravelle peut-être même il aime bien
un jeu pas moins coodinateur j'en sais
rien d'autre truc est donc en fait moi
mon but c'est de coder tout le coeur de
métier semble poser la question de quel
est le fera mort qu'on va utiliser donc
ça permet donc premier avantage de
retarder les choix techniques on va
pouvoir codé l'entièreté de notre
implication en termes de newscale dans
la loire tout codé sans se poser de
questions sur la technique qualité sur
du combat sur toutes ces idées de
framwork framwork base de données pas de
bases de données etc
alors autre avantage la facilité dans
les évolutions vu que le code vraiment
le coeur de métier de mon application
n'est pas dépendante du framework n'est
pas dépendant de la base de données il
ne sait pas quel est le framework en
chine ces paquets la base de données ben
forcément les évolutions se font
beaucoup plus facilement puisque si vous
devez changer de fram noir de même vous
allez changer effectivement toute la
partie framwork mais tout le coeur de
votre code vous n'allez pas le toucher
de la même façon si vous voulez changer
d'imaginer vous allez créer une
application web classique et tout d'un
coup vous voulez dire ouais mais il faut
ajouter une api un problème puisque ce
n'est que le code à l'extérieur de votre
hexagone qui va bouger
ce n'est pas le code à l'intérieur
votre code métier votre blog il reste le
même et donc ça vous permet de faire
évoluer facilement votre application
même même chose vous allez changer de
base de données vous aviez du mysql
maintenant vous voulez faire du gie
sonne pour une raison x ou y je vous
montrerai que c'est faisable mais pour
une raison x ou y voulait changer la
façon d'organiser vos données au sein de
votre hexagon vous ne touchez à rien ça
bouge pas jusqu'en hexagone se fout de
toute façon de comment sont organisées
vos données voulait faire du doctrine
fait d'une autre il voulait faire du pdo
fait du [ __ ] on voulait faire du zii sound
fait du ji sun on s'en fout puisque
votre métier aura été collées donc
évidemment on va voir ça plus en détail
quand on va la cré est tout simplement
le code où j'en étais donc au niveau de
l'état d'esprit maintenant qu'il va
falloir avoir quand on étudie
l'hexagonal architecture dit on pas
regarder ensemble quand on étudie cette
architecture ya un état d'esprit à avoir
c'est que 1
tout doit être dans votre métier la
valeur réside dans votre métier dans vos
cas d'utilisation donc quand on fait un
blog
ce qui est intéressant c'est qu'on
puisse créer un article c'est qu'on
puisse le modifier c'est qu'on puisse le
publier le des pubs liés c'est qu'on
puisse écrire un commentaire
tout ça jusque là moi je vous ai pas
parlé de framework je vous ai même pas
parlé du fait qu'il y ait une interface
peut-être c'est juste une api auquel on
envoie des requêtes http je vous ai pas
parlé tout ça moi je vous ai parlé
vraiment des règles du métier
l'application en elle-même le fait qu'
on envoie des requêtes http que ce soit
l api ou au contraire mac soit une api
web donc encore une fois c'est des
requêtes http mais avec du rendu html
etc
ça c'est une coquille c'est un détail
finalement on s'en fout d'eux est ce que
vous allez recevoir des requêtes et
envoyer du ji sun ou est-ce que vous
allez recevoir des requêtes et envoyer
du html on s'en fout c'est pas le
problème
est ce que finalement l'article a pu
être créé est ce qu'il a pu être
publiées etc etc et donc en fait
l'hexagone ne va contenir que ce qui
concerne votre métier et ensuite on va
brancher au bord de l'hexagone du
symphony du l'arabe elles ont même dû
php natif alors qu'elle est du coup
quelles sont les sources d'inspiration
pardon pour pouvoir un peu travaillé là
dessus
donc je voulais dit vous pouvez aller
voir la chaîne twitch thomas boileau
vous allez chercher sur twitch le ceto
mt aux hlm vous cherchez twitch point tv
slash théo h am vous abonner à cette
chaîne
il a eu aussi une chaîne youtube et lui
y montre vraiment il a différentes
vidéos il montre comment il implémente a
crié architecture dans symphonie est
très intéressant bien sûr michael
azerrad willcom et leur ce lac
vous pouvez aller vous voir là dessus
pour demander des conseils voir des
vidéos lire des articles et c'est
beaucoup plus orienté tdt mais aussi
hexagonal alors bien sûr il va falloir
regarder beaucoup de conférences de
l'affubler l'arakan les symphonies conne
les conférences des boxes etc
donc c'est des conférences que vous
trouvez sur le sud j'ai fait un mail
nous lecteurs dernièrement pour parler
de l'importance de regarder ces
conférences pour apprendre des choses
pour ouvrir votre pour ouvrir votre
votre esprit donc fait un et du coup
notamment moi j'ai beaucoup regardé
d'étoles que des conférences de cyril ma
retraire arnaud lemaire que ce sont des
gens qui sont très intéressants à suivre
notamment quand on parle de ddd quand on
parle de qualité de code etc
ça c'est un grand plaisir et on voit là
par contre effectivement je vous envoyer
une guerre pour ceux qui sont inscrits à
la newsletter ceux qui ne sont pas bien
inscrivez vous mais je vous en voyez
newsletters
dans laquelle j'ai notamment ni en place
dans les jambes je vous ai donné sur
tous ces sujets là des conférences à
regarder il y en a une
j'ai une personne qui travaille chez
open classroom je me rappelle plus de
son nom c'est malheureux et donc à
l'aide d'une personne qui travaille chez
opel placeront mais qui explique comment
quelles sont les différentes
architectures qu'ils ont mis en test
entre guillemets qui l'ont regardé et
quelles sont leurs différents avantages
et inconvénients est effectivement un
des gros avantages de la clé une
architecture nombre de l'hexagone
architecture c'est l'idée qu'on va
pouvoir évoluer très facilement ce qu'il
appelle les indices de changements
vous voulez changer le framework passé
de symphonie à la ramène aucun problème
vous voulez passer de vous êtes en
france voulait passer de rehamna angula
aucun problème si vous avez vous codé en
architecture hexagonal pas de souci pour
changer de fra - par contre
l'inconvénient comme le dit jonathan ici
c'est que vous allez avoir beaucoup
beaucoup beaucoup de code en justement
en parlant de code
maintenant que je vous ai parlé un peu
de nos inspirations passons donc au live
coding j'espère que l'on va pas trop
galérer à mettre en place les choses
donc on va avoir
l'idée c'est d'avoir un blog en php très
très simple alors attention très très
simple c'est vraiment je vous propose un
zoom skies c'est le fait de créer un
article point ça sera déjà assez long le
temps que j'explique les choses et c'est
donc un artiste c'est en obtient un seul
une seule chose que peut faire notre
blog pour l'instant c'est créer un
article et vous allez voir comment est
ce qu'on va pouvoir travailler en php
natif et si on a le temps va pouvoir
travailler que vous symphonie et le
franchement j'y crois pas vu qu'il est
déjà il est déjà 10h34 donc ça me laisse
une heure et demie je suis pas sûr qu'on
puisse faire du symphony merci oui
effectivement c'est romain cuse niaque
qui a fait cette conférence elle est
dans mon mail et deux civils avaient
reçue et si vous n'avez pas reçu
chercher sur google romaine qu juniac
je crois que c'était clé une
architecture symphonie vous cherchez sur
youtube et vous trouverez sa conférence
est une merveille a bien sûr il n'y a
pas de live coding c'est juste une
explication des différentes
architectures qu'ils ont eue qu'il voit
des différentes organisations et du coup
il va donner les avantages des
inconvénients et notamment notamment les
avantages en termes d' indices de
changements c'est à dire la possibilité
de faire des changements dans votre
application
alors que je ne dise pas de grosses
bêtises nous sommes ici voilà parfait
map boom direct lui il est chaud
bouillant il est là il est là notre
petit notre petit vs code l'a toujours
prêt à bosser 1
il est ici alors je suis ici dans un
simple dossier que j'ai créé n'importe
où dans mon ordinateur donc en code
hexagonal on s'en fout et donc ce que je
vous propose c'est qu'on met en place
petit à petit en suivant l'état d'esprit
l hexagone architecture un new skies un
seul le fait de créer un article dans
mon blog alors encore une fois je vous
rappelle l'idée c'est qu'on pense métier
on ne sait pas quelle est leur amour qui
sera utilisée on ne sait même pas si on
sera une application web ou une
application console on n'en sait rien
donc on est parti je vais commencer par
faire un composeur require et alors
qu'est ce qu'on va demander
on va commencer par demander d'abord de
quoi tester donc je vais prendre la
petite librairie peste
donc petit une librairie de tests qui
s'appuie sur phpunit mais qui va nous
amener une syntaxe un peu différente qui
va nous rappeler un peu d'ouest en
javascript donc je vais demander ici
peste qu'est ce que je vais demander
aussi je vais demander ce pas si je
crois qu'il s'appelle phpunit tirer
watchers va nous permettre de lancer nos
tests à chaque fois qu'on sauvegarde un
fichier si je dis pas de bêtises donc ce
passif et je vais demander aussi tant
qu'à faire le symphony barber aussi pour
qu'on puisse faire des barres d'un
peuple propre et je pense qu'on est pas
mal je vais pas faire de béate ici je
vais vraiment faire juste du test
fonctionnel unitaire up
donc on est parti on va installer ça
d'ailleurs pendant ce temps je vais
aller voir ici tac au tac tac la
documentation pour le phpunit watchers
parce que je crois qu'il nous faut un
fichier de config
donc c'est pas si psp unique
shut up il est là il est là et juste on
met en avant une petit dock qui va nous
dire comment est ce qu'on peut mettre en
place un fichier 2 confie vidéo où je l'
ai vu je n'ai vu lé là voilà alors lui
en gros son idée c'est juste voilà dès
que je vais sauvegarder un fichier va
relancer mes tests unitaires
donc là ça y est j'ai tout installer ça
c'est propre je vais me créer ici mon
petit fichier donc lui on va l'avoir
donc c'est phpunit tirer watchers points
william l je pensais y amène qui veulent
y mêle et on va voir si c'est bien ça
phpunit chez les watchers point y est
même très bien c'est exactement ce que
je voulais et donc ici qu'est ce qu'on
va lui dire dans ce fichier de
configurer dire écoute à chaque fois que
tel et tel dossier il ya un fichier qui
est modifié la tchaux relance les tests
ok très bien ce qu'on va faire c'est
qu'on va aussi générer la configuration
de phpunit donc en faisant ici un petit
vent d'or line tests dont peste c'est
mon logiciel qui me permet de tester en
fait tout simplement oui florian la
vidéo sera en replay bien sûr un comme
l'ancien lillois qui est en replay est
donc ici son affaire c'est qu'on va
faire là - général config pour qu'il
génère un petit phpunit point xml est
donc ici on va répondre oui c'est bon on
s'en fout ensemble et on s'en fout en
fait voilà c'est moins bon phpunit point
xml tac est donc là j'ai une
configuration pour pouvoir enfin lancer
est-ce que je peux réussir à fermer ce
terminal s'il vous plaît est ce que
c'est quelque chose qui est envisageable
de fermer ce terminal non ok je vais
simplement enlever ça ça me fait chier
le fait de mettre des annotations de
couverture ça m'embête à chaque fois et
donc on va faire on va commencer à
coller je vais m'organiser très
simplement je vais me faire un dossier
là dedans et vous savez quoi ce dossier
je vais l'appeler domaine par domaine
pourquoi même ce que ça va contenir
vraiment
le code de mon domaine ok donc dans ce
domaine je sais que je vais avoir pour
l'application de mon client donc je suis
en train de rire de discuter avec mon
client est tout et mon client me dit on
va avoir telle chose on va avoir quelque
chose dans l'art telle chose et donc je
sais que je vais avoir différentes
fonctionnalités et j'essaie de regrouper
bien sûr marrant ça se fait en avance
lors de la phase de conception je me
dire ok le mec qui veulent blog il veut
qu'on puisse se connecter donc ils vont
aussi une partie utilisateurs
authentification ils vont aussi une
plateforme d'admin et donc ça on va voir
après parce que dessus et des lâches
board compliqué et c est donc je vais
découpé en différentes fonctionnalités
et chacune de ces fonctionner comme par
exemple ici moi je les découpe et avec
blog mais on pourrait très bien donc
d'ailleurs ici blog je vais même le
renommé en blog avec un b majuscule mais
on pourrait très bien imaginer qu on y
note fonctionnalités c'est la
fonctionnalité je sais pas moi
authentification par exemple et on
aurait une autre fonctionnalité ça
serait la facturation par exemple et non
je vais découpé en dossier ok maintenant
moi en fait je vais pas faire
d'authentification neary un jour je
montre juste en gros l'idée c'est
d'avoir des dossiers comme sakhir qui
reflète les domaines de mon application
donc je vais supprimer le dossier hausse
c'est juste pour vous compreniez d'idées
dans mon dossier blog je peux choisir
l'organisation que je le mets donc du
combat dans mon dossier bloque ce que je
lis il me dit attends je vais avoir des
fichiers qui représente vraiment les
fonctionnalités de mon blog et je vais
avoir des fichiers de test alors
pourquoi pas créer ici un fichier src
qui correspondra finalement dans mon
dossier blog officier qui représente
vraiment les fonctionnalités et un
dossier test qui représentera les tests
2 mai fonctionnalités de mon blog tout
simplement lorsque je vais pouvoir faire
maintenant c'est que je vais pouvoir
commencer déjà à modifier ici mon
watchers pour lui dire écoute les
directory que tu va surveiller
il y en a qu'un seul c'est juste domaine
des quelque chose qui bouge dans le
domaine relance mais tests unitaires
donc si je fais la moindre modification
relance les tests pour que je sois sûr
que tout va bien
ok donc ensuite ce que je vais faire
c'est que je vais configurer phpunit
pour lui dire tu sais mes tests dont on
va faire une belle suite par défaut ici
on va l'appeler même on va pas l'appeler
défaut on va l'appeler
on va l'appeler blog point domaine blog
point domaine et on va dire que c'est
tous les fichiers qui finissent par tess
point php dans le dossier domaine blog
tu est tout simplement on va sauvegarder
et on va écrire un tout premier test
juste pour voir que la machine est bien
lancée qu'elle est bien rodé donc on est
parti on va ce parti récit sur un
fichier de test est alors ici valor
façon je vais juste là playtest point de
php peste test comme bhp puisque c'est
vraiment juste pour voir si ça marche et
je vais partir d'un petit mois s'il faut
que je zoome s'il faut que je joue en
fait un pote donc it should works est
ici on va avoir donc ici pour ceux qui
connaissent pas le best voilà les tests
unitaires
en gros j'explique it c'est une fonction
qui me permet de créer un test ça c'est
la destruction du test donc ça devrait
marcher en anglais et soul world c'est à
dire ça devrait marcher ici je vais
pouvoir faire des assertions offert a
certes roussy et je les passais trou est
normalement notre test devrait être au
vert si je les lance donc ici ce que je
vais faire ce que je vais lancer test et
on va voir si tout fonctionne voilà ça
marche donc ça y est je n'ai jamais
testé une terre c'est bon je peux les
faire il ya aucun problème
alors ce que je peux faire aussi ce que
je peux lancer s'élancer du couvent d'or
bean et hp unique watchers et bien
l'apprendre watch alors là duboule as tu
chantes rien faire c'est que j'entraîne
annoncé une commande alors pourquoi il
est pas content ce qu'on a oui autant
pendant j'ai oublié ici dans phpunit
watchers de lui dire qu'en fait ce qu'on
voulait lancer ces tests
ok donc lui en gros pour ceux qui
connaissent pas le watchers qui va faire
c'est qu'il va dire je vais regarder des
fichiers il est pas content ce point
cette attaque
ouais
mais j'ai jamais vu ça ou alors c'est
sûr maquiller que ces différentes sur
mon windows presse à tours n 11 de test
ben ouais exactement
est-ce que qu'est-ce que je m'en
attendais alors là on va faire juste un
test bougeait pas et j'aurai terminé
test pour m php oui c'est bon donc vous
voyez bien que quoi que je fasse ici
quand je les sauvegarder toto d'accord
les tests en bas doivent se relancer
et ça ça fait plaisir par contre ce truc
là moi je n'ai jamais vu cet indicateur
il semble donc ce n'est pas très grave
alors on va arrêter de raconter plein de
conneries on va se recentrer là j'ai
juste mis en place mon environnement eau
claire tranquille et on va discuter
ensemble de qu'est ce que c'est qu'un
blog et quels sont les cas d'utilisation
qui nous intéresse
hop hop on est parti donc quand vous
faites de l'hexagonal architecture comme
je suis en train d'essayer de faire
votre idée c'est vraiment de vous
concentrer sur le métier qu'est ce que
vous demande votre client notre client
est venu nous voir nous a dit voilà
nouveau blog on sait pas encore si c'est
un front très activement bullard avec
une api rest
on sait pas encore si c'est une api web
complète d'ailleurs même pour le
maintenir
on sait pas si on veut pas même
carrément une ligne de commande
directement genre pour créer des
articles en ligne de commande dans la
console
donc bon pour l'instant c'est pas où on
en est on sait pas avec l équipe
technique on va travailler n'était pas
de souci alors qu'est ce qu'on va
vouloir faire on va vouloir penser au
cas d'utilisation de ce client mais de
façon vraiment éloigné de toutes les
contingences techniques on veut penser
vraiment à son cas d'utilisation alors
merci colinot bonjour au maroc
et alors qu'est ce qu'on va vouloir
faire on va vouloir créer tout d'abord
des cas d'utilisation donc ce qu'on va
vouloir faire c'est testé par exemple un
cas d'utilisation l'utilisateur doit
pouvoir créer un article un poste ok
donc je crée ici un test tout bête
je vais l'appeler create post test point
php et ici je vais pouvoir dire voilà
deux
quoi on a besoin techniquement j'ai
besoin it should we hate de postes je
veux comme en cas d'utilisation soit
dans la capacité de créer un poste
ok ça semble logique claire au québec
ici maintenant que j'ai créé mon test je
vais pouvoir codés comme j'aimerais que
mon code fonctionne vous allez remarquer
que y'a aucun code pour l'instant il n'y
a rien dans mon âme un colloque est donc
là maintenant c'est à moi d'imaginer
comment je voudrais travailler ça alors
nous souvent tu nous dis nous ça fait 3
semaines que j'utilise un trucage des
nomades clairement je me la joue
beaucoup eu d'accord les gens qui savent
ils nous ont donné une possibilité une
sorte d' architecture qui s'appelle la
used guys architecture l'idée c'est de
dire vous allez travailler sur des noms
de places qui sont vraiment tellement
simple que même les noms des fichiers
devraient vous faire comprendre à quoi
ils servent
bien sûr vous allez respecter le srp le
principe solide qui dit que chaque
classe doit avoir une et une seule
responsabilité donc vraiment dès que
vous voulez travailler sur combien d
vous voulez travailler sur une
fonctionnalité
c'est une classe et une fonctionnalité
donc ici je dis j'ai une fonctionnalité
c'est la création d'un poste
donc j'imagine que je vais dire ici new
skies
c'est égal à new et j'ai imaginé que
j'ai une classe qui s'appelle qu il y
ait ce poste
ok et je vais imaginer que si je passe à
cette classe donc il va imaginer que
cette classe elle a une fonction qu'on
va appeler par un execute en fait dans
l'idéal vous devez rendre cette classe
un vocable comme sens moins frais
directement la plaie mais j'ai pas envie
de surcharger le live en expliquant les
choses etc
[Musique]
d'accord il ya un problème de micro ou
pas j'ai pas monter un spectacle ton
micro ne fonctionne pas c'est celui de
l'ordi qui est paramétré ah non alors ça
non ça je suis pas content par contre
nous allons attendre de seconde si vous
me dites ça là je suis pas content
[Musique]
super ben voilà donc en fait l'émission
est foirée puisque en réalité ça fait
depuis une heure qu'il ya des bruits
parasites et voilà bon super mais
magnifique bon donc nous reprenons
j'en ai marre j'en ai marre mais voilà
tu vois le problème c'est l'informatique
c'est vraiment un métier de con quoi
alors je reprends nous avons dans l'idée
ici de dire 'voilà junca d'utilisation
sais que je vais créer un poste ce cas
d'utilisation il doit être super simple
je vais lui donner les informations qui
correspondent à un poste un article et
il est censé le crée donc là c'est
relativement content que j'ai envie de
faire c'est juste de lui donner un
tableau où je vais lui donner les
informations de qu'est ce que c'est
qu'un poste est ici je voulais dire
voilà un poste c'est un titre d'accord
donc mon titre un poste c'est un contenu
donc mon contenu et un poste c'est aussi
le fait qu'ils soient publiés ou pas et
en fait c'est qu'on va me pas faire du
publier ou pas on va juste dire la date
de publication est ce qu'il y en a une
ou pas alors on va dire que un poste qui
n'est pas pu moi quoique non vacants je
sais pas l'avouer ça se réfléchit est ce
qu on a juste une date de publication
est ce qu'on a un statut de publication
est ce qu'on peut avoir les deux
peut-être ou alors on peut se dire que
quand on a une date de publication c'est
qu'on a été publié donc voilà donc vous
voyez que vous voyez que on a des
questions à se poser
donc moi je vais juste partir sur une
date je veux dire s'il ya une date c'est
qu'il est publié s'il n'y a pas de date
c'est qu'ils aient pas publié donc ici
je vais du passé tout simplement
1
est ce que j'y passerai en date times je
lui passais wendat times voilà hop
encore que est ce que c'est moi je suis
passé un détail m'a laissé bon ok donc
ça ce que je vais dire c'est que c'est
censé me renvoyer un objet poste donc
vous voyez que pour l'instant il ya
aucun code mais j'essaye de doigts
j'essaye d'imaginer qu'est ce que je
veux en fête est donc ici j'ai envie
d'assurer d'abord que ce qui m'a été
retourné c'est une instance d'une classe
qui s'appellera poste et qui pour
l'instant n'existe pas encore donc déjà
commençons par nous assurer que ça ça
fonctionne si j'ouvre mon invite de
commande ici tac tac tac
pourquoi il est pas content ce truc là
il a pas il n'a pas un tac à certaines
instances off
felioune sauvegarde et là j'ai oublié de
lui donner bien sûr l'objet j'aimerais
m'assurer que ce que j'ai reçus dans
post c'est bien une instance de la
classe poste alors est ce que quelqu'un
a l'habitude peut-être je crois que
jonathan site-là sur le chat est ce que
vous avez l'habitude comment on fait
pour lui dire d'arrêter de me faire
chier avec ça parce que du coup je vois
pas les résultats de mes tests ça c'est
très embêtant si quelqu'un sait comment
on lui dit tac tac tac
ok donc oui la cdu tdd qu'on est en
train de faire alexandre tu me demandes
si je passe la date annuler l'arctique
se cache
oui en effet alors ce n'est pas une
super solution parce que ça veut dire
que à toi tu le laisses hockey et donc
comment tu vois je vois pas mon test là
alors j'imagine que toi tu regardes sur
un autre écran où tu mets ça sur la
droite ok mon peu importe donc oui non
seulement on fait du tdi six autres
choses alexandre tu nous dis là du coup
si on enlève la date si on la met à nu
le bain article est caché ça c'est vrai
par contre c'est un petit problème parce
que ça veut dire que si on remet une
date de publication même - quoique non
ça se discute faudra y discuter bon
allez tant pis c'est pas grave par
contre est-ce qu'il ya une option qui me
permet de virer bontempi vous savez quoi
on va le laisser on va pas perdre trop
de temps là-dessus donc quelles sont les
erreurs que je constate je constate que
pour l'instant déjà dans mon code cette
classe ça n'existe pas donc je peux pas
travailler
ok donc comment est ce qu'on va pouvoir
faire je vais me dire dans mon dos si
acrc je vais donner vie à cette classe
alors cette classe ça représente un cas
d'utilisation d'accord donc
big man je me dis bah c'est très simple
je prends créé ici un dossier que je
vais appeler used guys hockey et où je
pourrais l'appeler aussi action il ya
des gens qui appellent ça action avec
manuel trou dans la config de phpunit
watchers voyez ça c'est les gens c'est
ça c'est les frérots ça ça c'est les
frérots donc ici ça serait ou que tu
leur ajoute ça aille de manuel tac tac
tac
bah tu sais quoi tant qu'à faire of là
ici s'il vous plaît eide manuel trou ok
donc c'est à la racine j'imagine comme
ça là eide
manu al trou à l'effet mois plaisent ici
on va quitter le watchers on va le
relancer
non non non on n'a toujours pas ça à
moins que je n'ai pas mis au bon endroit
à la racine
je suis à la racine je suis fatigué de
toutes ces bêtises
by défaut de tous les aspects elle peur
du kent eide et le message by adding
rythme annuel c'est fou parce que je
bosse depuis deux semaines mais sur mon
pc donc sur windows et j'ai jamais eu
besoin de faire ça évidemment je vous
fais un live je suis sur mon mac
et là c'est le drame si on met à la
racine racines ah voilà voilà
1 on est très très bien là les amis et
donc on voit directement le résultat de
nos tests
magique donc je reprends mon explication
vous pouvez créer ici un dossier used
guys et vous pouvez même l'appeler
action ce dossier finalement le nom du
dossier on s'en fout c'est à vous mais
donc ici on comprend bien si vous voulez
un développeur qui arrive y regardant
les sources new skies il comprend ok ce
sont les cas d'utilisation merci
beaucoup alex merci beaucoup alex est
donc là on va se créer bien notre
premier cas d'utilisation qui
s'appellera create poste point php et
oui c'est ma classe create poste le nom
de la classe doit me permettre de
comprendre mais c'est quoi ce cas
d'utilisation à quoi il sert je vais me
positionner dedans et alors là
j'aimerais me positionner dans un air
space systems space
je vais l'appeler domaine yu skyblog par
dont j'ai oublié le blog ou plein blog
used guys et là ça sera du coup ma
classe create poste tout simplement
alors je vais sauvegarder et par contre
ce que je vais être obligé de faire
c'est de me rendre mon composeur points
jeon pour commencer à lui donner des
idées politiques d'autres chargements
donc ici on va partir on va partir sur
une politique donc d'auto loading hockey
et on va dire que on a une politique de
type p asser 4 hockey et cette politique
elle dira tout simplement voilà toutes
les classes qui commence par domain blog
se trouve évidemment dans le dossier
domaine blog src et je dois mettre le
trading slash ici normalement
et là je vais sauvegarder et je vais
recharger mon fichier d'autolog donc php
bin bin non j'suis con composeur d'un
poteau lord up et là normalement je
devrais déjà avoir mon tout premier test
ma première erreur en tout cas qui n'est
plus la même normalement l'erreur
c'était que ici create poste ne
fonctionnait pas donc je vais arrêter
mon voiture comme j'ai changé mon auto
l'odeur et où j'ai changé de la config
donc je vais le relancer et normalement
l'erreur doit plus être la même
alors bien sûr elle est là même puisque
j'ai complètement zappé ici de faire
l'import de ses new skies
mais à partir de ce moment là je vais
importer ce new skies est là l'erreur
n'est plus la même
voyez maintenant l'erreur c'est plus que
le new skies n'existe pas ma classe
n'existe pas mais que ma fonction
n'existe pas ok donc on va repartir on
va travailler sur notre fonction exécute
ici on va dire que notre used guys il a
une publics fonctionnent execute qui va
prendre en paramètre un arrêt donc un
harry combat appelé poste data et qui va
retourner normalement allez on va dire
que ça peut retourner un poste pas
forcément je sais pas encore comment je
vais l'implémenter mais théoriquement
elle devrait me retourner un poste alors
pour l'instant la classe poste n'existe
pas donc vous aimez vous imaginez bien
qu'il va y avoir un souci est donc ce
qu'on va faire c'est qu'on va imaginer
que il existe un poste est donc ici je
veux dire tout simplement mon poste ce
sera égale un new post
et ce poste là je vais lui passer des
informations donc je vais passer par
ample post date à crochets title je vais
lui donner
je vais du passé post date à crochets et
confiante et je vais lui passer aux data
crochet publie chez red hat
tout simplement je vais mettre un point
virgule ici au niveau 2 du coup je vais
pouvoir retourner mon poste alors là
bien sûr
le test va péter un câble cette fois ci
le test peut être un nouveau câble parce
que la classe poste n'existe pas pas de
soucis mais je vais pouvoir réfléchir à
mon architecture est ce que j'ai une
idée moi je pense que dans mon dossier
acrc j'aimais used guys
mais je devrai aussi à voir ce qu'on
appelle des entités tac tac tac donc
mais entité ici on est parti donc dans
les entités ici en titi je vais avoir
alors en fait les entités vous pouvez
aussi d'émettre à la racine puisque
théoriquement c'est vraiment des objets
les plus importants on va dire donc je
vais avoir mon poste point php ici je
vais mettre dans mon bon même space ici
ça sera donc domaine blog en titi et
c'est une classe qui s'appelle poste
pour l'instant je vais faire une classe
très simple si j'ai pas le temps de
m'emmerder donc ça sera juste public
string title voilà mêmes on peut même
lui donner une valeur vois tu me diras
tu fais ça dans le constructeur public
string ici on va lui donner aussi
contrainte
public string on va lui donner ici lui
eut l'idée le fameux le fameux
identifiantes va nous permettre de
travailler
alors pourquoi ne pas passer par un des
terreaux c'est une très bonne question
jérémy en fait il faudrait passer par un
d'été au et je vous expliquerai ça juste
après à la limite c'est un sujet bonus
mais c'est un sujet très importante la
raison un jérémy mais c'est un truc que
j'expliquerai après là franchement je
suis ultra préséance et déjà 11 heures
je vois pas comment on pourrait aller
aussi loin que ce que je ne voulais à
cette heure là et donc on va voir aussi
un public un public que date time's up
on va avoir une date times ici qui sera
tout simplement notre public aide at on
va donner un constructeur à notre bon
ami ici donc public function constructs
lorsque vous pouvez faire aussi ce que
j'ai vu beaucoup je sais pas pourquoi
mais ce que j'ai vu beaucoup c'est des
constructeurs statique qui vous permet
de dire ben vas-y from a réparé un
enfant du patient tableau il se démerde
tout seul et c'est très intéressant
utilisé d'ailleurs je je pense que je
pourrais l'utiliser en fait ce truc là
il faudrait voir et donc ici ce que je
vais pouvoir faire donc au niveau de mon
constructeurs c'est dire voilà moi j'ai
besoin d'une string qui s'appelle title
et qui par défaut est égal à rien j'ai
besoin d'une string qui s'appelle
contrainte et qui par défaut est égal à
rien j'ai besoin
d'un publi shed hâte donc ce sera un
beau l'inde a time pardon mais qui sera
optionnelle parce qu'on pourrait ne pas
le passer ce date times donc j'ai un dat
times qui va s'appeler pub liste at et
qui par défaut est égale à nulle et j'ai
un string eu une idée j'aimerais qu'on
me le passent des fois si c'est possible
on peut me le passé qui serait par
défaut et gala banuls aussi et donc du
coup celui là il serait pas obligatoire
d'ailleurs en fait le public est ici
c'est une bataille mais qui est pas
obligatoire donc je le précise dans
maddock ici ok et donc ce que je vais
faire ici c'est très simple je veux dire
donc je vais manger kt et les choses
this flèche contrainte c'est égal à
content and this flèche public stadt
c'est égal à publique at et enfin notre
eu l'idée alors là on a quelque chose
qui moi en tout cas c'est comme ça que
j'ai fait depuis quelques temps vous me
dîtes si je suis si je suis pas bon
donc ici on à jonathan qui me parle de
faire plutôt and that time interface
pour recevoir n'importe quel
implémentation de dates times
et ensuite on à alex qui me dit date i'm
imitable carrément voilà on se fait
plaise qu'ont donc non laissez moi
tranquille
laissez moi je débute on va faire ça
avec des dates aïn tranquillou pour vous
me direz de façon c'est juste une
inversion de dépendance ça marchera
sichuan date à une interface j'imagine
donc aller partons sur du la times
interface hockey et donc ensuite ça
change pas grand chose pour ceux qui
suivent pas forcément alors limité
veulent vous êtes sympas mais si j'ai
envie de la changer
moi j'aime bien des fois changer les
choses arrêté de m'emmerder avec vos
concept fonctionnel moi j'aime bien
changer les choses
ok donc ici pour notre eu une idée on va
dire que soit on en a un mais que si on
en a pas ben il faudrait en fait il
faudrait le généré en fait donc ce qu'on
va faire c'est qu'on va dire simplement
ici eu l'idée et on va poser la question
à utiliser le nul coalescence et si en
fait on m'a passé un nul ici moi ce que
je mettrais c'est un unique idée tout
simplement générée alors unique idée
c'est une fonction qui est natif de php
qui va générer un identifiant un peu en
dessous la fin d'une petite chaîne de
caractères il existe aussi des
composants qu'on peut installer des
librairies qu'on peut installer pour
qu'on peut installer du coup pour
générer des idées mais moi pour
l'instant ça me suffit donc ça y est
j'ai mon poste alors je me pose une
question si je vais maintenant dans mon
clip est ici que je vais importer ce
poste je rajoute bien muse ici je vais
sauvegarder est ce que finalement mes
tests se passent bien à lui me dit non
pourquoi bête alors ça c'est un problème
dans mon test et que j'ai pas importer
ici la classe poste j'ai oublié de
l'importer dans mon test là c'est bon je
lai et si juste ça y est holla holla
holla assez magique alors attention eu
l'idée n'est pas pareil que 8 alors une
idée n'est pas la même chose qu'un
unique idée alors c'est vrai parce que
unique idf1 en tout cas au niveau
formatage en tout cas moi j'ai des
remarques et l'unique idée est vraiment
petit donc j'imagine que en termes
d'unicité tu vas pas tu vas pas du tout
avoir les mêmes
les mêmes probabilité d'unicité on va
dire dans un système énorme que lui d
alors sa demande et dans le chat les
amis alex alex silva nous filer des trop
sympa sur alex est trop sympa il est là
il l'aide
il donne des infos on n'en peut plus de
ces gens trop gentil là alors on en a
marre des gens gentils soyez méchant un
peu alors donc on en est où
mais ça y est on a notre test qui passe
donc on nous dit voilà le fait de créer
un article pour l'instant ça passe ouais
enfin c'est bien sympa mais est-ce que à
un moment donné on n'est pas censé quand
même pouvoir retrouver cet article ce
que l'on en fait j'ai juste créer un
poste mais je pourrais jamais le
retrouver en fait cesser ces nuls quoi
c'est parce qu'on veut donc ce que je me
dis c'est qu'il faudrait que notre test
il soit poussé un peu plus loin
donc ce qu'on pourrait faire c'est
rajouter ici une assertion qui
permettent de dire oui mais est-ce qu'on
le retrouve dans une source de données
quelconque et donc
[Musique]
et donc ce qu'on va pouvoir faire ici
c'est qu'on va pouvoir imaginer un autre
bout de code on se dirait bah tu sais on
aurait un entrepôt de données et on
pourrait aller chercher deux dans le
poste en question pour voir qu'il est
bien pris en compte dans l'entrepôt de
données en question donc ici on voit ce
que je propose c'est de d'enrichir un
peu ce test en disant on va imaginer
qu'on a un repositories et on va dire
que ben c'est un voilà on va appeler sa
in memory poste repositories voilà
jusque là où il m'attend mais qu'est-ce
que tu en train de [ __ ]
chantraine d'imaginer que j'ai un
endroit une classe toute simple où je
vais avoir un semblant de base de
données ici j'ai pas le droit d'accord
dans dans ma partie domaine je n'ai pas
le droit de commencer à discuter de base
de données je ne peux pas c'est interdit
par cette fameuse l'état d'esprit de
cette fameuse clean architecture je ne
peux pas travailler ici sur une base de
nos parents vrai on s'en bat les
couilles si j'ai envie maintenant je
mets une base de données on est d'accord
on n'est pas limité non plus on fait ce
qu'on veut mais ce que je veux dire
c'est que dans l'idée ici j'aimerais
bien travailler sans m'emmerder avec
voilà sans m'emmerder avec une base de
données etc
donc je vais me créer un semblant une
simulation de base de données donc je
vais dire ok j'ai un repositories est en
fait ce que je vais pouvoir faire même
carrément c'est me dire mais tu sais
quoi
mon new skies quand je vais le créer je
vais lui passer ce repositories de façon
à ce qu'ils puissent travailler avec ce
que j'aurais pu faire plutôt que de
créer ici un une memory pose très
positif plutôt que de créer ici une
classe qui va me permettre de travailler
directement j'aurais pu aussi créé un
invoque un mot qu qui sortent d'une
interface mais je veux pas aller trop
vite trop vite trop loin mois restants
restons tranquilles et en fait grâce à
ça je vais pouvoir rajouter une nouvelle
assertion
je vais me demander à sur moi que à
sertic oil ce moment là je demandais à
sur moi que si je demande à mon
repositories et j'imagine que mon
repositories à une méthode find one par
exemple et que je lui passe
l'identifiant du poste a sûrement que ce
que je vais recevoir c'est bien la même
chose que mon poste d'ailleurs
théoriquement du coup on devrait
inverser puisque assure - c'est d'abord
ce qu'on connaît et c'est ensuite ce
qu'on veut vérifier
alors bien sûr ouais je pourrais même
dire à certains que nulle en fait ça
suffirait - testons comme ça donc
évidemment si je lance mes tests sap est
pourquoi pas parce qu'il va venir mais
c'est quoi cette class in memory
repositories alors ici ce qu'il faut
comprendre c'est que en fait je suis en
train de créer un truc mais c'est
vraiment pour mon test c'est pas du code
qui a à faire avec mon domaine c'est
juste parce que dans mon test j'en ai
besoin
ok donc du coup ce que je vais faire
c'est que je vais me créer dans mon
dossier test je me crée un dossier que
je vais appeler adapters par exemple moi
on s'en fout adapteur ouais je sais pas
et je vais de d'en créer un nouveau
fichier que je vais appeler un in memory
poste repositories point php hockey et
je vais ici du coup me dire je vais
créer dans le même space d'ailleurs
tiens ça me fait penser excusez moi que
j'ai pas créé de de politique d'auto
chargement ici pour le test donc bouger
pas deux secondes je vais juste créé ici
une politique et vous savez quoi on va
le faire carrément dans un note au lot
de dave
on va se créer une politique ps r4
encore et on va se dire les gars c'est
facile tout ce qui vient de domaine blog
test
en fait ça sera dans domaine blog tests
et j'ai oublié le training slash
ici on va régénérer l'auto l'odeur
excusez-moi % j'avais complètement
oublié quand j'ai fait ma quand j'ai
fait ma mise en place tout à l'heure
désolé tac tac tac tac est donc ici au
niveau du nem space je suis bien dans ce
domaine blog test et je vais créer du
coup dans adapters et je vais me créer
une classe qui s'appelle in-memory
repositories hockey et pour l'instant je
ne vais rien lui donner
si ce n'est que je vais lui donner un
public pareil poste qui par défaut est
un tableau vide donc en fait je suis en
train de simuler voir juste là c'est
très important que vous compreniez
pourquoi je fais ça
je suis en train de simuler une base de
données en php la direccte donc une base
de données oui ça a des données c'est
finalement une table aussi une base de
données dans la mémoire dans mon php
mais c'est une base de nospelt ce n'est
pas une base de données sql mais c'est
une base de données et donc ok là je
suis en train de simuler ma base de
données en mémoire
alors maintenant regardons ce qu'on
attend de ce truc là
ce repositories on attend de lui qu'il
soit positionné dans mon new skies dans
mon action de créer un poste et on
attend de lui qu'il est une fonction
find one ok donc la première des choses
que je me dis c'est que je me dis que il
faudrait dans mon action cluet poste que
je lui passe l'article donc ici je vais
venir dans mon club poste je vais dire
que je vais recevoir un haut niveau de
mon constructeur je vais recevoir une
injection de dépendances
in memory repositories ou là
attendez je me suis trompé dans le monde
la classe up in memory poste avait posé
tories hélas ici tac tac tac c'est un in
memory post repositories voilà je vais
dire que je vais recevoir un mmoz
riposte repositories que je vais appeler
repositories on s'en fout ici ce que je
vais faire c'est que je vais dire que je
vais avoir une propriété protégé qui
sera tout simplement un in memory post
repositories et que je vais appeler
poste repositories hockey est donc ici
je vais me l'injecter je veux dire mon
post repositories c'est égal oripeaux
que vous me balancer lorsque vous me
construise est tout simplement est ce
qui veut dire que ici je vais être
capable d'utiliser ce truc là
donc qu'est ce que je vais dire je vais
dire this flèche post repositories
flèche et j'imagine un jour j'aimerais
bien un jour avoir une méthode qui va
s'appeler save et qui prendront part à
mettre le poste tout simplement
ok alors évidemment mais test ici ils
vont exploser parce que j'ai fait plein
de choses ici qui n'ont pas de sens
alors par exemple déjà ne serait ce que
dans mon test je fais appel à in memory
post repositories sans avoir fait le
youth donc je vais l'importer voilà le
petit use his
je vais sauvegarder et là maintenant
j'ai une nouvelle erreur l'erreur c'est
qu'il n'est pas de méthode save dans ce
fameux post repositories donc je vous
propose qu'on en créer une
je vais créer ici une publics
fonctionnent save hockey qui va recevoir
un post up un poste qui s'appellera
poste et qui qui retourneraient 1 qui
retournera le poste auquel je sais pas
pourquoi je fais ça mais sait-on jamais
et donc ce que je veux dire c'est que
dire écoute c'est très simple nous
allons rajouter à notre tableau des
postes un élément dont la clé ça sera
l'identifiant unique de mon poste est
l'élément ça sera le poste tout
simplement et on retournera le poste lui
même je vois pas trop l'intérêt mais
sait-on jamais donc je vais balancer ça
comme ça mais maintenant j'ai une
nouvelle erreur
la nouvelle erreur c'est juste attention
nous ne trouvons pas d'antan
repositories fonction find one ok alors
on est parties publiques fonctionnent
find one
ici on va dire qu'on veut une string qui
sera un eu l'idée et on va dire que ça
retourne un poste ou pas ça peut
retourner nul si pas rien tu me dis fine
douanes et tu me passes un idée qui
n'existent pas alors je te balance ray
nul si par contre ça exige je te balance
ray le poste en question est donc ce que
je vais te retourner c'est ce qu'il y a
dans mon tableau des postes à la clé une
idée messi a rien là dedans je te
retournes nul tout simplement je vais
sauvegarder et là qu'est ce que je vois
que mes tests ils sont passés alors
qu'est ce que ça veut dire ça veut dire
ici là on a un test qui pour le coup
tient la route on a une source de
données peu importe ce qu'elle est est
ce que c'est une base de données est ce
que c'est du gie stone est ce que c'est
un tableau peu importe on a une source
de données on l'a passée à notre action
et quand on a exécuté notre action gala
sources de données a retenu a maintenu
l'information magnifique c'est vraiment
ce que je voulais alors maintenant j'ai
une question à vous poser
pour l'instant mon used guys ici il
n'est capable de travailler que avec une
source de données qui s'appelle
in-memory post repositories il n'est pas
capable de travailler
il n'est pas capable de comment dire
n'est pas capable de travail excusez moi
ce que j'aurais à le chat en même temps
c'est dessus à peu près ce que vous
dites il n'est pas capable de travailler
avec une autre source de données avec
une autre classe
il dépend ici d'une source de données
qui est le in memory post repositories
est-ce que c'est flexible cette histoire
a priori si on manque grandement grand
demande de flexibilité
comment est-ce qu'on pourrait gagner
d'un coup une puissance phénoménale en
termes d'évolutivité de notre code et
même tout simplement en respectant
propre très simple on va respecter juste
un principe de base le principe
d'inversion des dépendances est ce qu'on
va se dire dans nos têtes à chaque fois
qu'on va codé on va dire il vaut mieux
dépendre d'une interface il vaut mieux
dépendre d'une abstraction que d'une
concrétions que d'une implémentation ok
donc on est parti
si vous êtes prêt on va mettre en place
ici une abstraction de façon à ce que
mon used guys puisse utiliser n'importe
quel implémentation que je vais pouvoir
lui donner derrière alors voilà ce que
je vous propose ses abstractions ces
fameuses d'abstraction est ce que
j'arrive à le retrouver surtaxe sur mon
canot valin ses abstractions up est ce
que j'arrive à le trouver voilà ces
abstractions c'est ce qu'on va appeler
des porcs dans notre hexagone ok donc
pour l'instant monde aussi src c'est mon
hexagone hockey est pour l'instant j'ai
je vois que mon dossier src donc mon
hexagone ici il utilise une classe qui
n'est pas dans mon hexagonal est dehors
ok et donc en réalité ce qui va falloir
que je fasse
c'est que j'utilise une interface que je
vais garder dans mon hexagone on appelle
ça un port et ensuite je pourrai
brancher dessus n'importe quel
implémentation donc même visuellement
france et pas forcément visibles comme
ça mais regardez je vais venir dans mon
dossier src je me crée un nouveau
dossier
je vais l'appeler comme j'ai pas
d'imagination jeune crétin je vais
l'appeler port hockey et dans mes pores
je me crée un nouveau port que je vais
appeler poste repositories interface
pour le php
alors ça s'il nous manque la thur que
j'utilise moi d'accord mais vous pouvez
ne pas l'utiliser dans d'autres dossiers
quand on est quand on est sur du six
chars quand on est sur du java enfin les
gens dans d'autres met par exemple qui
préfixe les interfaces avec 1
non pas remplies ibos tripoli tories bon
moi je suis partie comme sa poche
repositories interface donc on est parti
là dessus nous sommes dans le nem space
donc nous sommes dans le domaine blog
or et nous créons une interface qui va
s'appeler poste repositories interface
alors cette interface c'est un contrat
donc cette interface et un contrat on va
demander tout simplement à n'importe qui
qui veut implémenter cette interface
devrait posséder une fonction save qui
va recevoir un poste d'accord et qui
retournera un poste que j'ai demandé oui
est ce que ça vaut le coup ça vaut le
coup de retourner le poste ou pas qu'est
ce que vous en pensez
en fait je pense qu'on s'emballe et
courir çà retournera est ce que est ce
qu'on pourrait laisser si on s vide le
si on laisse vide le retour ici est ce
qu'avec toutes leurs conneries de
contrats variance et c'est une
implémentation pourrait renvoyer ce
qu'elle souhaite renvoyer si elles le
souhaitent
bon je sais pas faudra voir
et ensuite on aura une fonction qui va
s'appeler find one
d'ailleurs elle pourrait s'appeler find
the one or nul est donc ici ce qu'on
pourrait avoir ses dires ben tu va
m'envoyer un hub idées et moi ce que je
vais te renvoyer c'est un poste où pas
parce que peut-être il n'y a pas de
poste avec cette idée là donc on va
sauvegarder cette interface telle
qu'elle est on va venir dire que notre
in memory post repositories il est très
beau il est très sympa et on va lui dire
que il se réclame de l'interface qui
s'appelle poste repositories interface
alors là évidemment théoriquement oui
donc je vois que ça marche
dire que si l'interface de demandes de
nos vins si l'interface ne précise rien
tu as le droit de renvoyer ce que tu
veux ça c'est très très propre or ça je
vais l'enlever on s'en fout on va
sauvegarder et donc la dernière chose
qu'on va faire c'est tout simplement que
ici au niveau du créé de postes au lieu
de demander à se faire livrer un hymne
et maury repositories d'accord c'est à
dire que je ne peux travailler que avec
une source de données qui est en mémoire
non donnez moi n'importe quelle source
de données à partir du moment où c'est
un poste repositories
face tout simplement hop je vais
sauvegarder et on va aller voir si nos
tests continuent de passer l'alcootest
ils sont pas contente du tout pourquoi
ils sont pas contents c'est est toc toc
toc
non alors là c'est moi qui ai fait une
grosse connerie c'est que j'ai mis qu'on
était dans le néant space postes au lieu
de porc ici et ça donc c'est une très
grosse bêtise
donc ici partout où j'ai appelé ça c'est
por c'est pas poste excusez-moi tac
alors bougez parents je corrige un peu
toutes ces conneries tableau tac tac ça
c'est ici et là ici c'est bien hors tac
et voilà ça y est ça passe donc c'était
juste un problème de nom de dead space
des espaces de noms donc je vais
reprendre du coup encore une fois depuis
le début nous avons ici un new skies que
nous avons nourri avec une source de
données on le dit voilà les données tu
va les mettre là bas ok ensuite tu va
exécuter ses new skies et on va vérifier
si ça a bien fonctionné
on a écrit le test on a vu que ça marche
et ça marche très bien on est très
heureux mais quelque chose à emporter
encore plus
tac tac tac tac tac tac on a apporté
encore plus c'est qu'on a apporté une
abstraction qui fait que en réalité je
peux passer à mon used guys n'importe
quelle source de données il va
fonctionner donc ce qui veut dire que
derrière si j'ai envie de faire une base
de données sql
je pourrais du passé un reee poesy
tories qui fasse du pdo vous voulez
qu'on fasse un test d'ailleurs
et vous savez quoi on est fous on est
fou on est des malades on est des maboul
aller balance moi une petite interface
alors par contre tu es sympa est-ce
qu'il ya moyen que tu me fasses un truc
jolie en fait puisque moi en fait j'ai
demandé un métro l'un est ce qu'on peut
avoir un autre thème joly parce que je
sens là ils vont en fait sur youtube il
faut voilà voilà voilà a fait ne fait
pas passer pour un con non plus ok super
on va se créer une nouvelle base de
données
on va l'appeler exams log deux cortèges
on s'en fout lutter f8 général ces idées
nous sommes allé j'y connais rien me
dites pas qu'il faut tel ou tel
collation j'en sais rien ou est-ce qu'on
est ici sur le chat je regarde qui est
pas de questions particulières pourquoi
tu ne suis pas fait acheter storm parce
que je n'ai pas payé voilà est ce que
est ce que ça vaut le coup ou est-ce que
franchement c'est très bien la justice
est trop trop bien mais là je suis chaud
en lega pour l'instant moi je motive et
scotch content on va créer une table
qu'on va appeler postes le nombre de
colonnes ces quatre ou cinq je me
rappelle plus cinq colonnes 1 et pop
donc ça vous voyez c'est une question
qui vient derrière lamont logiciel il
marche la base de données c'est autre
chose on est parti on va dire que un
poste c'est un eu l'idée ok donc c'est
du var car je sais pas moi alors je sais
pas combien une norme vous me direz 1,8
et c'est forcément le temps de caractère
mais comme je la connais pas encore bien
je vais partir sur du 255 un article
c'est aussi un title un article c'est
aussi un conte tent est donc ici on se
rassure du times ou mais non qu'elle
compte c'est du texte c'est en dessous
qu on est sûr de la date times et un
article c'est aussi une date de
publication public tu as tu es là c'est
effectivement une date times
l'op voilà donc la sai et hop je vais
juste rajouter un index de claix
primaire sûrement eu l'idée et on est
parti on a une table voilà on a notre
table poste et on va voir maintenant si
je suis capable de faire passer le même
test mais cette fois ci avec un stockage
en base de données
donc qu'est ce qu'il me faut il me faut
un repositories qui si je veux le passé
à mon cou y postent ici c'est ça qui est
important les amis vraiment pont surtout
pour les débutants comprennent pas trop
ma classe cris et de postes ça regardez
pour être construite elle attend
n'importe quel objet qui a représentent
une interface post repositories donc ça
c'est vraiment si le point clé de tout
ce live sans ça le live vous le laissez
tomber il sert à rien donc le point clé
c'est de dire je vais avoir besoin ici
d'une interface du d'un objet pardon qui
implémentent l'interface post
repositories donc ce que je vous propose
dans nos tests ici on va se créer un
nouvel adaptateur d'accord et on va
l'appeler pdo poste repositories ok je
vais mettre là-dedans je me créais même
space se nomme space ça sera donc que je
dise pas de conneries domain blog test
adapters très bien et nous allons avoir
ici une classe qui s'appelle pdo poste
repositories et qui implémentent dont
qui signe le contrat qu'ils doivent
mettre en place ce qui est demandé par
la poste repositories interface qu'est
ce qu'elle me demande cette coquine elle
me demande une publics fonctionnent save
et elle me demande une public fonction
find donc là vous voyez en fait c'est ça
qui est magnifique c'est que imaginé ça
fait deux mois que le projet est en
ligne
et là on vient ici on me dit il faut que
tu crées maintenant on veut passer sur
du mysql est sûre du pdo faut que tu te
voilà il faut que tu fous qui a hélas
donc moi je dis ok c'est quoi la
facilité de changement de mon projet je
veux faire du pdo mais qui a pas de
problème voilà pdo post repositories qui
implémente le post repositories je suis
guidé par l'interface l'interface me dit
faut une fonction save une fonction find
one tu as juste à mettre le code qui va
bien dedans
ok donc moi parce que je propose c'est
un truc tout con c'est aussi bête que ça
quand vous allez me crée déjà moins ce
que je vais avoir c'est que je vais
avoir besoin d'une connexion à la base
de données donc quand vous allez me crée
alors là je vais pas du tout le rendre
paramétrable et toi je vais aller très
vite
vous allez instanciés une connexion à la
base de données via pdo je veux dire pdo
c'est égal à un niveau pdo et je vais
partir tout simplement tranquillou bilou
je vais partir tac tac tac tac
partez pas en débat sur les meilleures
vidéos prenez les ide qui vous plaisent
à la cfu c'est faux que vous ayez pas
cette fibre altruiste l'un est gentil
alors que tu alors je vous dis d'être
méchant non ça voilà soyez méchant
jetez-vous défions dites-vous que
phpstorm c'est mieux que le reste et
c'est au moins ça fait de l'activité
et puis ça vous fait voilà ça vous fait
réfléchir un peu c'est le pdo
l'architecturé hexagonal non pdo c'est
juste une classe de connexion à la base
de données ok donc à ici je vais partir
en balançant une collection à la pop
mais tu dégages syrie s'il te plaît à
l'époque tu dégages voilà on est reparti
donc je vais lancer ici une connexion
excusez moi y'a du coup il ya syrie qui
c'est qui est implémenté dans l'histoire
aussi donc mysql poste égal localhost db
name égal si je dis pas de bêtise j'ai
appelé ça exams blog underscore tests et
du coup le cas recettes qui est de
lutter f8 ok donc ça c'est prêt
maintenant ce qu'on va faire c'est qu'on
va travailler aussi en tant que route et
le mot de passe ses routes et on va
préciser aussi quelques options donc pas
l'herbe par exemple le fait que l'on
veuille s'il ya des erreurs avoir des
exceptions donc en est sûre pdo airs
mode exception voilà parfait donc là
j'ai ma connexion à la base de données
maintenant on me dit tu dois être
capable de sauvegarder un poste très
bien pas de problème donc ce que je vais
faire je préparais ici une requête avec
mon pdo primaire up
donc la requête ce serait tout
simplement un que je dise pas de bêtises
la requête ce serait tout simplement
quoi ça serait insert into on va
utiliser la notation d'insertion de
mysql temps confère insert into poste
cet élan est partie title ce sera égale
à elle-même les soldeurs contente ça
sera égale à elle-même les soldeurs une
idée pardon ce sera égal à et là je me
plais soldeurs et enfin qu'est ce qu'on
voulait d'autres qu'est ce qu'on voulait
d'autres qu'est ce qu'on voulait
d'autres bah oui je suis con la publie
chez date les amis alors alors plus
[ __ ] et ate qui sera égal à un plex
holder public j'ai hâte
ok donc là j'ai préparé ma requête allez
on va balancer on va faire un coup et
riz flèche execute et ici on doit lui
passer nos places holder donc je vais
dire écoute pour le title c'est facile
hein ces postes flèche title ok je vais
lui dire aussi pour le contest c'est
facile c'est poste flèche confiante je
vais lui dire ici pour le idée là aussi
c'est facile c'est poste une idée et
enfin pour le public aide underscore
hâte
attention là il ya une petite subtilité
vu que nous nous avons soit une date
time soit rien du tout ici ce qu'on va
pouvoir faire c'est un truc tout bête
c'est qu'on va pouvoir dire si le poste
à une donnée publique aide at ce que je
veux c'est postes publics at flèche tac
tac tac que je dis pas de bêtises forme
at on va formatés au format mysql donc y
mdh 2.8 de point s ok et sinon bah je
voudrais du nul en fait tout simplement
alors est-ce qu'on peut la voir mieux
rangé sa tak tak et tac hockey est donc
là théoriquement ça y est j'ai exécuté
market d'insertion si j'ai une date je
lui donne une date sinon je lui donne
rien du tout gmarket d'insertion alors
maintenant la briquette pour trouver
c'est très simple la requête pour
trouver un poste les amis parce qu'on va
faire c'est tout simple on va encore une
fois faire une connerie on va demander à
notre pdo de préparer une requête et
cette requête
elle est toute conne select étoiles from
poste were on va faire un alias
sélectionnés on va faire ça joli au cas
où elles doivent évoluer plus tard p
point étoiles were poste hpr paix point
eu l'idée est égal et là je me plais
soldeurs hockey et donc on est parti
query flèche execute et ici on va lui
passer un tableau avec nos plaies
soldeurs une idée ça sera égal à lui dès
qu'on a passés en paramètres alors bien
sûr cette commande est ce qu elle elle
peut retourner un poste ou ne pas en una
pas en retour n'est donc ici ce qu'on va
être capable de faire c'est simplement
dire résulte c'est égal à query flèche
fait ch on va le récupérer sous la forme
d'un tableau de pdo fait à soc hockey
est ce qu'on va dire c'est que si on n'a
pas reçu de résultats est ce qu'on peut
faire c'est retourner nul voilà on n'a
rien reçu en fait et si par contre on a
reçu un résultat qu'est ce qu'on veut
faire et bien vous le transformer en un
poste donc on va dire ici poste c'est
égal un new post hockey et on va ici lui
donner les différents paramètres qui
l'attend n'ont pas rappelé le title je
sais que je l'aide en résulte crochet
title le contente je devrais la voir
dans résulte crochet contrainte le du
coup le public j'ai hâte
ben là c'est une question qu'on doit se
poser c'est ce qu'on doit se poser c'est
est-ce que résulte crochet publie shed
underscore hâte
est-ce que c'est nul ou pas alors ce
qu'on va dire c'est que si en a un
alors il nous faut un new data times ok
avait en lui passant ici résulte crochet
publie chez red hat et 6 ans n'a pas bon
on va lui passer de simplement nulle et
enfin il faudra passer ici le resulat
crochet eu l'idée est alors normalement
ce poste si je le retourne
on va être ok alors là c'est là où mon
test
il est peut-être mal fait c'est que j'ai
fait ici dans mon test a certes icons et
j'aurai forcément pas le même objet là
forcément pas le même objet alors oui le
pdo il est défini tout simplement à la
construction de façon aura de façon
vraiment dégueulasse mais c'est pas
grave c'est pour aller vite alors du
coup là on a notre post repositories qui
a été créé théoriquement nos tests
devraient foire et si on utilise donc ce
que je vous propose c'est qu'ici on dise
écoutez on va partir sur un [ __ ] au
poste repositories vous remarqué que ici
c'est pas soumis en rouge 9 ma classe
cruet poste l'acceptent volontiers
maintenant la question c'est est ce que
les tests fonctionne alors moi ici je
vois que les tests ne fonctionne pas
alors ne serait ce que parce que dans la
donnée publique at malheureusement on va
avoir un problème ici est ce qu'on peut
aller
est-ce qu'on peut aller à une
merde est ce qu'on peut avoir un détail
moins fort sur le public tattoo pas du
tout enfin sur le web sur le a certes
equal cela on peut lui dire le mec t'as
bu un peu là sur les midis seconde mince
comment vous en sortir y est là comment
vous en sortir et y est pour ce qu'ont
ils me fous des comment je me suis
démerdé c'est parce qu'ici en fait j'ai
créé un nude date times sans rien lui
donner donc il a été très très
spécifiques
est ce qu'on peut faire ici un dat times
deux points deux points
cloud y ait from formate oui ca et c'est
alexandre qui me donne l'info donc on va
voir alexandre question recrues et
franck formate pas ok ben moi je vais un
format classique quoi mdh ici le
problème jusqu aux membres qu'est ce que
ça change en fait les premiers pas
contents ce conte cruel on formate non
ok tu dois me passer le format in time
est bien le times de maintenant frères
la pop toujours pas pourquoi il est pas
content alors dans le constructeur est
implémenté interface d'hatem interface
bonne nul given donc lui ait poste ici
je lui ai donné du nul ici ça veut dire
que ça ça m'a donné un nul ça veut dire
que ça ici ça me donne du nul
est-ce qu'on est censé avoir un est-ce
qu'on est censé avoir un format
différent ici une forme formate voilà un
truc que j'utilise jamais tu vois aller
on apprend on apprend tous ensemble tu y
passe le format un format accepté par
date donc ça marche pour y mdh y est pas
de problème
et là tu me passes une string
représentant le times et times un mois -
et nine se pourrait que t'es pas content
si je te disais str to time non celle
inverse a tant aimé la chiotte débile
mental ou quoi je suis débile c'est le
moins que je suis un débile j'ai un
chêne conquois
il faut définir une date fixe pour des
tests de forme de façon à ben oui très
bien
ok les gars pas de souci c'est une très
bonne idée
merci beaucoup merci beaucoup
comment on pourrait faire une date
déterministe est bloqué écoutez les gars
on va faire un new data y manque tout
simplement c'est un lion date times et
la date ça sera 2020 01 01
as tu pas moins 14 heures 30 00 voilà
tout simplement qu'à ce palais beaumont
up
alors pourquoi il est pas content mais
parce qu'il faut le formater maintenant
non je sais pas ce que j'ai mis un point
virgule comme un débile
ok et ben voilà un al alam ils sont
forts ils sont forts ils sont forts là
ils sont trop forts
dieu merci dieu merci on est en live
d'emblée très bien donc alors
effectivement qu'est ce que j'apprends
ici grâce à nos amis et tous c'est vrai
que c'est quelque chose que je m'en
étais pas rendu compte
en même temps c'est vrai que j'ai pas
fait de blogs encore en examen et j'ai
pas fait de choses trop lié aux dates
mais c'est vrai que je m'étais pas rendu
compte que ici dans l'idéal dans nos
tests on veut avoir des dates comme vous
le dites
et comme le dit mika donc de will come
qu'on est des dates comme on appelle ça
qu'on est des dates ici qui sont
déterministe pour que nos tests ont pu
ensuite voir dans les résultats des
tests que tout s'est bien passé et que
c'est bien effectivement déterministe
mais juste une question les a mis là moi
en fait si vous voulez tout ça c'était
juste pour vous montrer que ça marche
d'accord alors bien sûr dans l'idéal il
faudrait faire un setup et un tir
d'armes pour dire qu'on va supprimer
toutes les données
donc en fait dans l'idéal ce que vous
voudriez faire ici c'est faire en sorte
que le pdo repositories en fait avant
chaque test il ay supprimer toutes les
données et après chaque test avant ou
après chaque test en tout cas qu'ils
aillent supprimer toutes les données
[Musique]
alors non non non non attends nique à
elle me dit tu devrais passer at on
exécute une instance d'ain date provider
voilà qui va donner des dates mais
non en fait non c'est moi qui décide en
dehors de mon mieux ce qu'est ce qu'elle
est la date de l'article si j'ai envie
de dire que c'était d'accord c'est en
dehors du ou skies normalement que je
dois lui que je dois lui dire mais ils
disent ici il est sympa mais on est
d'accord que ça c'est une info qui vient
de hors dooyoo skies la date de
publication d'un article ou pas je sais
pas à moins que son client était dit non
non de toute façon quand on crée un
article on peut pas dire nous mêmes une
date
il faut que ce soit tout de suite
maintenant moi je pense que je ne
mettrai pas dans l'ue skies parce que si
par contre je veux dire que je le publie
dans deux semaines tu vois oui si c'est
vrai que si dans l'ue ou skate je disais
non moi ce que je veux c'est tu vois moi
ce que je veux c'est que ça se publie
tout de suite
voilà ce que je pense c'est que en fait
c'est en dehors du ou skies donc là en
fait voilà il ya deux avis il ya des
gens qui veulent mettre la détermination
le défunt le fait de déterminer la date
à l'intérieur de la fonction exécutive
si d'accord donc quand on crée le poste
et moi je moi je pense que ben en fait
ça devrait être passé plutôt comme une
information que je passe quand j'exécute
les choses voilà pour dire que quand je
veux quand je veux publier peut-être
dans un autre moment ici pouvoir passer
une date différente
ok bon ça dépend chacun voit midi à sa
porte
en tout cas mes tests passent bien et
j'ai prouvé le compte que je voulais
prouver c'est que ici je suis dans mon
cloud gate poste je suis à l'intérieur
de l'hexagone
est ce que je vais recevoir ici en
termes de riz posit ory ça peut être ça
peut être quelque chose qui est ça peut
être quelque chose qui est une base de
données ça peut être quelque chose qui
est en mémoire etc etc
ici en fait si vous voulez le code qui
est à l'intérieur de montclus et poste
se fout complètement de qu'est ce que
c'est que le repositories tout ce qu'il
faut c'est que ce repositories îles et
les méthodes qui sont prévues par notre
contrat par notre interface
alors encore une fois dans l'idéal on va
pouvoir maintenant tester ce truc là or
ça fait une heure que le test dont vous
admire mais tu testes déjà google mais
du coup là il faudrait faire des tests
de cas d'erreur par exemple il faudrait
se dire ben si jamais j'en vois pas les
bonnes données je devrais avoir tel est
l exception
donc pourquoi pas si vous voulez on peut
le faire on pourrait faire un dernier
test et après on passerait vraiment un
complément
ce qui me reste finalement 20 minutes
donc ici on pourrait faire des tests
donc it shoes trop ça devrait en fait
moi ce que je veux c'est que si je passe
à mon used guys un article entre
guillemets fin des données qui ne sont
pas complètes je voudrais avoir je
voudrais que ça sera donc il souffre aux
[Musique]
invalides poste data ou invalides poste
data exception elle devrait être mieux
nommer cette exception même si jusque là
je me sens prêt c'est d'un coup donc je
suis un peu ou alors oui pour répondre à
davidian une rediffusion de ce live est
donc ici bin ich bad data is provided ok
donc ça devrait me balancer une une
invalidité exception invalides data si
on fait le même used guys
mais avec des mauvaises données donc ce
que je vais faire si tu fais tout
simplement reprendre le même code
hop je vais arrêter par contre de
travailler avec le pdo post repositories
vais travailler encore une fois avec mon
in-memory ne serait ce que pour avoir
des tests qui soit plus rapide qui soit
pas dépendante de mon mysql etc
et ici je vais essayer d'utiliser mon
new skies en lui envoyant par exemple
différents tableaux qu'ils soient
systématiquement fossé entre guillemets
ok donc ce que je vais faire ici c'est
que je vais dire ici que ma fonction va
recevoir
des données donc post data hockey ici je
vais dire que je vais balancer à mon mon
exécute ses fameuses données donc post
data qui seront un tableau est donc ici
je vais pouvoir préciser voilà ce test
là cette fonction j'ai envie de
l'appeler avec différence est de donner
différents tableaux de données qui
seront tous faut donc je vais dire je
vais te tape les comme ça hop avec le
tableau suivant déjà par exemple title
ça sera mon titre et je vais lui dire
ici que je n'ai pas de contrainte
je n'ai que pub liste at qui serait égal
à un new data est ici on va lui passer
une date 2020 01 01
voilà on casse on se casse pas les
bonbons et de la même façon je vais lui
envoyer la même chose mais sur un
tableau qui ne contient pas de titre up
et je vais même faire sur un tableau qui
est complètement vide
donc vous voyez ici je prévois des
données que je vais envoyer à mon used
guys pour voir comment il va réagir
tak tak et alors là évidemment il ya
tout qui explosent alors attention moi
ce que j'attends de tout ce truc là
c'est que ça jette une exception qui va
s'appeler invalides qu'est ce que j'ai
appelé comme qu'est ce que je voulais
lui donner invalides poste data
exception donc j'aimerais que ça jette
une exception qui soit invalides poste
data exception ok je balance attention
la classe invalides pause data exception
n'existe pas donc voilà là vous voyez
j'ai dit ce que je voulais faire
j'ai dit ce que je voulais faire
d'ailleurs c'est a certes ici n'ont pas
d'intérêt j'ai dit ce que je voulais
faire
ok et je regarde mon test et je me fais
guidé par monde parle et les retours de
mon test pour travailler donc ouais
alors n'hésitez pas vous allez sur la
chaîne de will come il est dans le chat
vous cliquez dessus vous avez sur sa
chaîne vous abonnez vous regardez
abonnez vous parce que je pense que si
vous faites monter le nombre d'abonnés
est bien ce cher michael il va se mettre
un peu la pression la dir nord mais il
faut que je sorte des vidéos un peu là
faut que je sois faut sortir des vidéos
un peu là
donc il va nous sortir des ressources
donc cette invalides exception n'existe
pas pas de souci elle fait partie de mon
domaine de mon hexagone donc pourquoi
pas dans mon dos si acer s'est créé un
fichier que je vais même dossier pendant
que je vais appeler exception et je vais
à l'intérieur me positionner une
nouvelle invalides poste data exception
point php elle sera dans le r space
domain blog exception et ça sera une
classe alors je la fais finale pour pas
qu'on en hérite alors c'est un peu
débile mais depuis un fameux une fameuse
conférence de frais de boucherie frais
de boucherie est très très bon allez
suivre frédéric frais de boucherie
allait le suivre
je m'amuse avec toutes mes classes en
finale bon là je n'ai pas fait mais bref
c'est un nouveau truc que je fais je
vois pas vraiment l'intérêt est alors
allé en gros l'idée c'est de vous forcer
à respecter le principe aux deux solides
c'est à dire que vous ne devriez pas en
tout cas si vous étendez une classe il
faut que ça soit sue et donc il faut que
vous soyez conscients que vous étendez
une classe et que donc vous allez
modifier le final enfin bref il ya toute
une idée comme ça qu'ils développent
dans une conférence va le regarder
donc oui le final fait que vous ne
pouvez pas hérité de cette classe bon
y'a pas fou il n'y a pas forcément de
d'intérêt donc par ton là dessus on va
dire ici que nous avons une invalides
poste data exception qui hérite ou là
qui hérite de exception hockey est en
fait elle fera vraiment rien de spécial
on va rien n'y a pas de constantes qui
rien n'a vraiment rien faire de spécial
pour l'instant et nous en fait ce dont
20 ce qu'on attend c'est tout simplement
que quand il y a quand il y a un tableau
qui a de mauvaises données on est cette
exception et là on ne dit pas non c'est
pas possible on nous dit ici c'est pas
possible
donc ce qu'on va faire up enfin c'est
pas possible c'est pas que c'est pas
possible ça n'a pas marché
ici en fait dans notre new skies alors
ça dépend la logique métier je sais pas
trop où est ce encore je suis désolé je
tâtonne je vous montre ce que j'apprends
je répète je sais pas encore exactement
où est ce qu'il faudrait la mettre cette
logique métier de validation de la
donner certains disent qu'il faut la
mettre dans l'entité que c'est l'entité
qui est responsable de ces données
et je sais pas je ne sais pas vraiment
où la m et comment le faire donc faudra
encore une fois ans il y en a qui ont
des exemples des dépôts guitou je peux
aller voir des dépôts github et c'est là
pour le coup moi ce que je fais depuis
quelques finlande puis les deux semaines
vraiment où je commence à travailler là
dessus c'est que je la travaille plutôt
dans mon new skies c'est à dire que je
dire voilà pour tell you ce qu'est ce je
vais avoir besoin de tel truc alors
c'est peut-être idiot parce que
peut-être du coup je vais avoir un new
skies où je vais avoir une mauvaise
validation par rapport aux besoins de
mon entités et c'est peut-être un peu
con donc évidemment théoriquement je
devrais la m tête dans l'antique mais
pour l'instant on va la mettre ici et
pour faire de la validation ce qu'on va
faire c'est qu'on va s'installer une
nouvelle bibliothèque qu'on n'avait pas
encore installé pour l'instant donc
composeur require et je vais installer
notre pote bébert l'oeil si je dis pas
de bêtises c'est bien ça db relayent
[Musique]
berlais ce lâcher a certes c'est ça je
dis pas de conneries il me non mais
attention il va me le dire si je me suis
gouré on va voir composeur si je me
trompe et tu vas me le dire tac tac tac
tac bébert l'énoncé bon voilà beverley
ya certes donc qui est une librairie qui
va me permettre de faire des validations
de données et donc ici ce qu'on va faire
alors vous savez quoi les gars seront à
faire aussi c'est que quand j'aurai
terminé cette vidéo je regarderai
l'intégralité du chat pouvoir tous les
conseils que vous m'avez apporté et voir
aussi des questions qui ont eu parce que
peut-être que je pourrai les re postés
derrière et donc ici ce qu'on va faire
c'est qu'on va se mettre une protected
ans je viens le protected ce que celle
là elle n'est pas intéressante dehors
fonctionne validate je vais lui passer
ici un poste est en fait elle elle va
juste elle va juste rester de valider et
il est possible qu'elles seront une
exception donc ici ce qu'on va faire
c'est qu'on va appeler la fonction lazy
qui fait partie qui fait partie du
package de bébés relais a certes et on
va pouvoir dire ici ce genre de choses
va dire mais assure moi que poste flèche
title et bien rico arrête c'est ça non
c'est pas vrai c'est notre banque assure
moi qu'il n'est pas vide et tu peux
aussi m'assurer que sa mine lynx c'est 3
par exemple assure moi en gros que le
titre n'est pas vide et que sa mine lynx
et 3 et je peux les enchaînés comme ça
c'est un petit pas terne flux
très très beau et donc je peux dire ici
a sûrement aussi que mon post contente
eh bien tu vas m'assurer que il n'est
pas vide et aussi tu vas m'assurer que
sa mine longue sa longueur minimale
pardon c'est 10 caractères par exemple
et donc je peux travailler comme ça
alors normalement il me semble qu'il y
avait un truc aussi que sa play that
postes publics at in stance of bah du
coup là on va dire date times interface
classe et je crois que tu avais de la
possibilité de dire hors nul alors
d'accord non il faut dire nulles
or ça donc à sur moi que publie j'ai
hâte sera nul
non mais en fait je dis une connerie
en fait j'ai dit une connerie puisque la
wii c'est bon c'est ça que ce soit nulle
où que ce soit une une date times ok
très bien et là en fait ce que je vais
dire c'est que je vais déclencher la
vérification en disant verifynow ce truc
là est censé lancer une exception si un
problème
ok ce truc là est censé lancer une
exception s'il ya eu un problème et dans
l'exception des censée retrouver quels
sont les problèmes
alors voilà ce que je vous propose ici
ce qu'on va faire c'est que on va créer
notre poste est ici va bien falloir
faire attention parce que parfois dans
nos tableaux c'est ce que je teste
injustement dans mon test je vais vous
montrer tac dans mon test ici j'en vois
des tableaux qui ne contiennent pas
forcément toutes les données nécessaires
hockey est donc ici ce qui va faire que
je fasse quand je construis mon poste et
que je fasse gaffe à ce tableau je vais
dire parlant de bikutsi un poste data
point title si on n'a pas deux mois une
chaise vide le contexte si on n'a pas
d'eau ni moins une chaîne vide et le
poste data publica tu si on n'a pas de -
2 nuls la valeur nulle
ok donc je vais créer ici mon poste
comme ça et juste après je vais pouvoir
dire que je veux le valider this
validate poste ok et alors là vous allez
voir que au niveau des tests il va
sûrement violée pourquoi il va gueuler
tac tac tac parce qu'il va me dire ici
il va me dire écoute dans ton test tu
nous dis que si on passe de mauvaises
données
on devrait avoir une exception invalides
poste data exception regardez ce qu'ils
nous disent ici ils nous disent c'est
pas possible parce que ce qu'on a reçu
c'est bien une exception mais ce n'est
pas une elle valide poste data c'est une
lady assertion exception bah oui parce
que ici en fait mon validate d'accord
qui utilise la fonction lazy va ben du
coup va me faire un throw d'une lazy
insertion exception donc moins ce que
j'ai envie de faire c'est de dire si
jamais cette exception se produit alors
je vais alors je vais moins lancé mon
exception à moi pourquoi parce que je
veux que depuis l'extérieur
quand il ya un problème de données on
voit pas une exception qui est dû à ce
fameux lézina ça c'est pas mon problème
moi je veux une exception métier qui
parle vraiment ne serait ce que par son
nom et donc du coup ici ce qu'on va
pouvoir faire alors juste un truc alex
moi j'ai vu ça sur un live de thomas
thomas boileau le lazy ici te permet
justement de dire que tu veux faire
passer toutes ces insertions d'un seul
coup et donc à voir dans ton exception
l'ensemble des erreurs et non pas la
première qu'il a rencontrés là tu veux
vraiment avoir un peu comme le comme le
validateur de symphonies finalement
d'avoir toutes les informations d'un
seul coup comme ça justement pour les
mettre en place par rapport à ton
formulaire ça c'est très propre et donc
du coup ici le on veut transformer cette
valise cette exception qui est on va
dire technique en une exception
véritablement métier et donc c'est très
simple je veux dire les gars je vais
tester sans et soit ça marche
et du coup il n'y a pas de souci c'est
validé je te le retourne et je te fais
je le savais je te leurs tombes pardon
merde
viens ici voilà tout simplement c'est
tout bête et si ça marche pas je vais
attraper ici malaisie
lazy assertion exception hockey que je
vais appeler eux et je vais te balancer
moi même une exception de noms propres
comment dire de mon propre jugement
comme on dit dans mon propre ma propre
création quoi voilà donc je vais te
balancer ici une news invalides poste
[100:00] data exception est le message pourrait
[100:03] même mettre le flèche guette message
[100:04] parce que j'ai pas d'idée encore de quoi
[100:06] mettre donc je vais carrément de passer
[100:07] le message de l'exception qui a eu lieu
[100:09] dans ma nouvelle exception et alors là
[100:11] où en sont mes tests et bien les gars ça
[100:13] passe parfaitement bien
[100:14] magnifique alors j'aurai absolument pas
[100:17] le temps de créer maintenant une
[100:18] implémentation enfin à la limite on peut
[100:20] faire une implémentation très très
[100:22] rapide en mode pour vous montrer du coup
[100:24] simplement vous montrer ici les amis que
[100:26] dans mon domaine ce qui va être comment
[100:30] dire ce qui va changer par rapport à ce
[100:31] qu'on voit habituellement vous faites du
[100:33] symphony du la ravelle et c'est ce qui
[100:35] va changer la plupart du temps c'est que
[100:38] tu vas avoir ici c'est ce que tu vas
[100:41] avoir ici justement des news qui ne
[100:43] sortent jamais de ton domaine sauf bien
[100:45] sûr pour des dépendances sauf bien sûr
[100:48] pour des dépendances un peu à la con on
[100:49] va dire du genre voilà lazy assertion a
[100:51] certes date times interface mais il sait
[100:53] que du php il n'y a pas de notion d'un
[100:55] frein technique ici alors oui excusez
[100:58] moi c'est vrai que j'ai pas beaucoup
[100:59] regardé le live c'est parce que le chat
[101:01] pas renoncer parce que je m'étais donné
[101:02] vraiment un objectif je voulais vous
[101:03] montrer comment l'implémenter comment le
[101:05] mettre en oeuvre et comment
[101:06] d'implémenter et j'ai perdu beaucoup de
[101:08] temps et j'ai pas réussi à gérer la
[101:09] suite désolé mais deux heures sont
[101:10] passées sans que j'ai réussi à vous
[101:12] faire passer tout ce que je voulais vous
[101:13] passez donc c'est vrai que j'ai un peu
[101:14] délaissé le chat donc j'en suis désolé
[101:16] mais n'hésitez pas encore une fois posé
[101:17] des questions ici dans le tchat
[101:19] éventuellement je donnerais ça me
[101:21] donnera des idées pour de futurs vidéo
[101:22] et dans lesquels je pourrai répondre à
[101:23] ces fameuses questions
[101:24] alors moi ce que je vous propose c'est
[101:26] un truc tout con vraiment on va tenter
[101:28] une implémentation
[101:29] donc on travaille plus du tout dans le
[101:31] domaine on est d'accord on travaille
[101:32] plus du tout dans le domaine
[101:33] on va travailler dans un nouveau dossier
[101:35] ici qu'on va appeler un fera par exemple
[101:37] hockey et dans ce dossier un frein on va
[101:40] créer la structure que l'on veut donc ce
[101:42] dossier un frein en réalité dites vous
[101:43] que ça peut être du symphony ça peut
[101:44] être votre dossier src dante symphonie
[101:46] vous pouvez très bien avoir deux dans un
[101:47] dossier d'un contrôleur par exemple ok
[101:50] vous pouvez même avoir un dossier test
[101:52] alors là je vais pas faire du test
[101:53] driven et rim reste 10
[101:54] pour vraiment essayé de faire une
[101:56] implémentation donc je vais me dire
[101:57] voilà dans ce dossier un fera ce que je
[102:00] vais faire c'est que je vais faire un
[102:00] contrôleur je vais l'appeler cloud gate
[102:03] poste contrôleur hockey point de php je
[102:08] vais me dire qu'on est dans le nem space
[102:09] is in space
[102:12] ça va être du coup ap contrôleur hockey
[102:17] et je vais essayer de vous créer ici une
[102:20] implémentation tout bête c'est name
[102:22] space name space up et donc on est parti
[102:26] on a une classe qui s'appelle create
[102:28] poste contrôleur est en fait ce que
[102:30] j'aimerais c'est que ben 7 ce contrôleur
[102:34] il est une publiques fonctionnent
[102:36] je sais pas moi haendel request hockey
[102:40] est donc en fait quand on a envie de
[102:43] créer un poste on va lui balancer ici
[102:45] une requête
[102:45] alors pour ce faire moi ce que je vous
[102:47] propose c'est que on s'installe une
[102:49] librairie vraiment très simple c'est
[102:51] http foundation de symphonies donc je
[102:53] fais un composeur require symphonie
[102:56] slash http fundation l'idée c'est quoi
[102:59] c'est simplement d'avoir un moyen simple
[103:01] de représenter une requête
[103:02] ok c'est vraiment tout bête et donc je
[103:07] vais installer ça et quand ça sera
[103:08] terminé je vais pouvoir finir cette
[103:10] implémentation up ici oui mais c'est bon
[103:15] vous disputez pas c'est évident que j'ai
[103:17] pas eu beaucoup de chutes a eu beaucoup
[103:19] d'interaction avec le chat il n'y a pas
[103:20] besoin de vous disputer pas rester
[103:22] tranquille patata pas toi bien
[103:24] excusez moi on va y revenir ne vous
[103:27] disputez pas tout va bien et donc ici on
[103:29] va dire qu'on va recevoir une request
[103:31] une requête http est donc ici alors
[103:33] théoriquement je devrais le tester tout
[103:34] ça je devrais le construire en tdd mais
[103:36] j'ai pu le temps donc imaginer jeune
[103:38] contrôleur il est tout bête il va dire
[103:40] ben si larry quest ix les enquêtes
[103:44] d'accord alors ce que je vais vouloir ce
[103:49] que je vais vouloir faire pardon c'est
[103:50] te montrer le formulaire sinon ce que je
[103:55] vais faire sinon c'est traiter le
[103:58] formulaire up traiter le formulaire et
[104:02] montrer un titre h1 à la con avec le
[104:06] titre de l'article
[104:08] ok vous comprenez où je veux en venir
[104:11] alors ici vous êtes d'accord ce dont je
[104:14] vais avoir besoin pour montrer le
[104:17] formulaire ça c'est tout con ce que je
[104:19] vais faire c'est que j'ai fait un hymne
[104:20] cloud et je vais sortir de ce dossier là
[104:24] je suis dans contrôleur infra je vais
[104:26] sortir et je vais aller dans le template
[104:28] et je souhaite inclure forme point html
[104:32] pour un php tout simplement
[104:35] d'ailleurs ce qui est con c'est que je
[104:36] pourrais même carrément retournez donc
[104:38] je pourrais même faire ici un obstacle
[104:39] up pour lancer un temps pour mémoire je
[104:42] vais inclure mon fichier est ici je vais
[104:44] te retourner une réponse new responsable
[104:49] a response au niveau du html je vais lui
[104:51] mettre un hub guette clean tout
[104:53] simplement
[104:54] et donc a du coup je vais pouvoir te
[104:55] retourner ce que j'ai inclus ok donc la
[104:58] seule chose dont j'ai besoin c'est dans
[104:59] mon dossier infra je me crée un dossier
[105:00] template tac tac tac new folder template
[105:06] est dedans je me crée un formulaire to
[105:08] tout bête je suis désolé je sais que je
[105:10] recherche le truc mais c'est pour que
[105:11] ceux qui sont vraiment intéressés et au
[105:13] moins un point final à toute cette
[105:14] histoire ok donc dedans je vais faire du
[105:16] html tout simplement création d'un
[105:20] article ici je vais me brancher un h1
[105:23] créer un article je vais me créer un
[105:26] formulaire très rapide au qui sera un
[105:28] formulaire en méthode poste qui n'aura
[105:30] pas d'action particulière est ici ce que
[105:32] je vais faire c'est vraiment un input
[105:35] qui va s'appeler donc de type texte qui
[105:38] va s'appeler title et qui aura une plaie
[105:41] sur l'odeur qui sera title je vais me
[105:44] faire aussi une textarea qui aura tout
[105:47] simplement un name qui sera contrainte
[105:49] et un placed under qui sera contrainte
[105:52] hop hop tout simplement je vais me faire
[105:55] aussi pourquoi pas une case à cocher
[105:59] tu sais quoi on va faire une case à
[106:01] cocher ici input de type checkbox qui
[106:05] aura pour nom d'un publi shed c'est tout
[106:08] et on va la mettre dans un label up s'en
[106:13] fout
[106:13] tac tac tac tac tac on s'enfonce en
[106:15] foutant prix pour l'accessibilité tac
[106:17] tac tac et on va la mettre dans un label
[106:20] qui dira tout simplement articles
[106:23] publiés point d'interrogation
[106:25] ok je vais mettre un bouton de
[106:26] soumission dont le texte sera enregistré
[106:32] ok super donc j'ai envie de lancer cette
[106:34] page pour voir un peu la gueule que ça
[106:37] et donc ce qu'on va faire c'est qu'on va
[106:39] tout simplement secret ici un nouveau
[106:41] fichier qu'on va appeler tout simplement
[106:42] je sais pas moi qui ait underscore poste
[106:45] point de php dedans on va mettre en
[106:48] place tout notre application on va faire
[106:50] un require de notre on va aller chercher
[106:54] notre auto l'odeur donc hop slash
[106:58] vendors slash autologues ok on va ici du
[107:02] coup tout simplement se crée une requête
[107:04] donc en disant requests est égale 1 ris
[107:08] ques deux symphonies from global hockey
[107:11] et on va pouvoir se créer notre
[107:14] contrôleur donc contrôleur ce sera égal
[107:17] à new york post contrôleurs et ensuite
[107:21] on va pouvoir l'appeler donc dire
[107:23] contrôleur flesh and the request
[107:25] on va lui passer notre request et lui on
[107:28] sait que théoriquement il est censé nous
[107:29] renvoyer une réponse
[107:30] et cette réponse on va tout simplement
[107:33] la renvoyer au navigateur
[107:34] donc vous voyez que ici j'ai choisi j'ai
[107:38] fait des choix m'accorde implémentation
[107:40] c'est moins qu'ils aient choisi hockey
[107:43] j'aurais pu faire du symphony j'aurais
[107:45] pu faire du la ramène là j'ai juste
[107:46] voulu faire du php bon ça ressemble à
[107:48] tout sauf au niveau mesuré puisque
[107:48] j'utilise http foundation mais j'ai
[107:50] choisi des choix d'implémentation
[107:52] alors maintenant ce qui va falloir faire
[107:53] juste une dernière chose que j'ai oublié
[107:56] de faire c'est que va falloir rajouter
[107:56] ici dans nos politiques de psr 4 il va
[107:59] falloir rajouter que tout ce qui
[108:00] commence par la pp en fait ça se trouve
[108:03] dans un fera tout simplement
[108:05] ok je vais sauvegarder je vais relancer
[108:08] mon auto l'odeur et on en aura quasiment
[108:11] terminée je vais me lancer un petit php
[108:13] - est-ce un petit serveur php
[108:15] tranquillou donc sur locales aux deux
[108:17] points 3000 je vais m'y rends mon oui
[108:21] évidemment ça vient pas sur mon
[108:22] navigateur donc localhost de pointe 3000
[108:25] slash
[108:26] est un discours post point php est donc
[108:29] là qu'est ce que j'ai comme erreur
[108:30] failed to open stream
[108:31] infra oui j'ai oublié ici excusez moi
[108:34] les amis c'est presque terminé promis
[108:37] promis après on fait un point et je vous
[108:38] laisse tranquille
[108:39] tac ici il me manque un slash donc la
[108:45] maco qui elle est prête c'est à dire que
[108:47] j'ai quelque chose qui enrobe mon cas
[108:49] d'utilisation j'ai ici ce qu'il faut tac
[108:52] tac tac tac et donc maintenant la
[108:55] question c'est que se passe-t-il mon
[108:57] article à la con pour vous faire plaisir
[108:59] mon contenu de test et cet article est
[109:04] publié qu'est ce qui va se passer quand
[109:05] j'enregistre est donc là théoriquement
[109:07] ce qu'il faudrait faire ici c'est qu'il
[109:10] faut que mon contrôleur lorsque la
[109:12] méthode n'est pas guette mais lé poste
[109:13] il faudrait traiter donc ici ce qu'il
[109:15] faudrait faire c'est traiter le
[109:17] formulaire en appelant le new skies
[109:20] donc il me faut le new skies donc ce que
[109:22] je vais vous proposer ici c'est tout con
[109:24] c'est que ma couche infra elle a tout à
[109:26] fait le droit d'appeler des concepts qui
[109:28] sont dans ma couche domaine alors il y
[109:30] en a qui vont encore plus loin il met
[109:31] carrément des ports et des adapteurs
[109:32] dans ce sens là aussi du côté gauche
[109:35] moi pour l'instant je n'en suis pas
[109:36] encore là donc ici j'ai tout à fait le
[109:38] droit de dire vous savez les amis moi je
[109:39] vais avoir besoin d'accord je vais avoir
[109:42] besoin pour travailler d'un truc qui
[109:44] s'appelle pluie ait poste et qui est un
[109:46] you skies et qui fait partie de mon
[109:48] domaine c'est ma c'est vraiment mon
[109:50] métier ça et donc je vais dire ici que
[109:53] j'ai quelque chose que je vais appeler
[109:53] parents bihac actions ou new skies même
[109:55] par exemple jusqu'à is ok est ce que je
[109:58] vais dire c'est que je veux dire si vous
[109:59] voulez construire ce contrôleur vous
[110:02] êtes obligé de me passer ici incluent
[110:05] huit postes
[110:06] ok et donc je vais le demander par
[110:09] injection de dépendances this flèche new
[110:12] skies égale new skies est donc ici ce
[110:16] que je vais être capable de faire c'est
[110:17] de dire tout simplement quand il ya un
[110:18] souci
[110:19] enfin parlons quand je suis en poste
[110:21] excusez moi eh bien j'ai envie tout
[110:23] simplement de transformer la requête qui
[110:26] a vraiment formulaire en ce que je vais
[110:28] passer à mon used guys je vais donc
[110:29] appelé mon used guys ici je veux dire
[110:31] used guys in the skies pardon
[110:37] hop c'est égal enfin non je vais appeler
[110:41] pardon sa méthode exécute et en fait
[110:43] elle est censée me renvoyer un article
[110:45] est donc sa méthode exécute ce que je
[110:47] vais lui passé comme information c'est
[110:48] un tableau où je veux lui dire bah
[110:50] écoutes je vais exécuter sa à base avec
[110:52] un title avec un title ici ce qu'on va
[110:57] faire c'est que on va tout simplement
[110:59] traité request flèche alors nous on est
[111:02] en poste donc on va utiliser la request
[111:04] et on va demander de choper le title et
[111:06] cie a pas de tighten va donner une
[111:07] chaise vide
[111:08] et là c'est magique parce que je fais
[111:09] l'interface entre mon new skies qui
[111:11] attendait un simple tableau est toute ma
[111:13] coquille qui parle de symphonie de
[111:15] request etc
[111:16] ben c'est ici que je fais l'interface
[111:18] dans mon contrôleur est donc ici je vais
[111:20] pouvoir avoir mon conte pence ça serait
[111:22] request flèche request flèche guette
[111:27] contrainte et par défaut si à rien je
[111:29] mettrais du vide et enfin je devrais
[111:31] avoir une donnée publie chez red hat ici
[111:33] qui est censé être une date times alors
[111:34] où nul ou une bataille - nullards à ce
[111:36] que je peux faire c'est poser la
[111:37] question suivante est ce que dans ma
[111:38] request on trouve l'information publique
[111:42] shed la case à cocher est ce qu'elle a
[111:43] été cochée ou pas et là je pose la
[111:46] question si c'est le cas ce que je vais
[111:48] vouloir mettre dans le public
[111:50] at c'est tout simplement un new data y a
[111:54] que bat simplement une ou d'hatem en
[111:56] fait parce que c'est publié à partir de
[111:57] maintenant par exemple ok on s'en fout
[111:59] sinon je mettrais du nul et là les gars
[112:02] ça y est j'ai mon new skies qui va être
[112:04] appelé correctement et donc ici ce que
[112:06] je vais pouvoir faire c'est tout
[112:07] simplement retourner une nouvelle
[112:09] respons et j'avais demandé à ce qu'il y
[112:12] ait 1 h 1 avec le titre de l'article
[112:14] tout simplement donc ici ce que je
[112:15] pourrais faire c'est faire un achat en
[112:17] interpellant ici poste flèche tighten up
[112:21] up
[112:22] je vais fermer mon achat et alors là
[112:24] théoriquement j'ai dû bien que
[112:26] théoriquement quand je vais ici créer
[112:29] mon contrôleur il faut que je lui passe
[112:30] mon used guys donc je vais créer ici mon
[112:33] new skies
[112:33] c'est égal à new york post et le new
[112:36] skies lui-même mais il faut lui passer
[112:38] un repositories donc ce que je vais
[112:39] faire je vais faire quelque chose qui
[112:41] est interdit je vais utiliser quelque
[112:42] chose qui est dans la couche 2
[112:43] dans mon domaine dans mes tests
[112:45] normalement c'est pas fait pour ça mais
[112:47] donc je vais quand même le faire parce
[112:48] que j'ai plus le temps j'aime créer ici
[112:49] un pdo repositories c'est égal à new pdo
[112:55] poste repositories ok je vais le passer
[112:58] à moins qu'ils aient ça évidemment tout
[113:01] ça pour ceux qui connaissent un peu dans
[113:03] symphonie tout ça c'est pas vous de le
[113:04] faire
[113:05] ça sera aux containers d'injection de
[113:06] dépendance de gérer ça ok et donc ici je
[113:09] vais passer à mon contrôleur - used guys
[113:10] tout ça normalement vous en occupez pas
[113:12] ans et le conteneur de service qui
[113:14] s'occupe de tout ce bordel ok merci
[113:16] beaucoup alex d'être passé merci pour
[113:19] ton aide
[113:19] merci à tous on va quand même terminé
[113:22] pour vérifier que tout marche bien et là
[113:24] on voit bien que quand j'appelle mon
[113:26] formulaire mon article à la con a été
[113:28] créé si je viens ici
[113:29] en plus de tous mes tests unitaires je
[113:31] vois bien que mon article à la con a été
[113:33] créé et donc je vois finalement que ici
[113:36] les amis j'ai mon domaine qui marche
[113:40] il est prêt à fonctionner avec n'importe
[113:42] quelle source de données il ne dépend
[113:44] d'aucun framwork tôt qu'une
[113:46] implémentation si j'ai envie de faire
[113:47] une api rest qui appelle mon domaine
[113:49] mais je le fais si j'ai envie de faire
[113:51] un contrôleur classique symphonie je le
[113:53] fais aussi et cetera et cetera
[113:55] donc pour conclure alors là je suis
[113:57] désolé j'ai pas du tout tenu mes
[113:59] promesses d'abord j'ai mis plus de deux
[114:00] heures et en plus j'ai pas du tout fait
[114:02] du symphony alors pour résumer les amis
[114:05] l'architecturé hexagonal ici l'hexagone
[114:08] c'est le dossier domaine d'accord
[114:09] imaginer que le dossier domaine et un
[114:11] hexagone et imaginer que le dossier
[114:13] infra c'est tout ce qui est autour de
[114:16] l'hexagone d'accord c'est ce qui est en
[114:18] dehors donc il ya toujours une notion ça
[114:19] ce que vous verrez dans les conférences
[114:21] il ya une notion importante qu'en fait
[114:23] de l'architecturé hexagonale ou de la
[114:24] clean la notion importance et deux dents
[114:27] dehors
[114:28] ok je sais pas si vous si vous comprenez
[114:30] ce que si vous comprenez bien cette
[114:32] notion de deux ans d'odeurs pour
[114:34] l'instant d'andorre 22 hors d'eux dans
[114:36] la mais pour l'instant il ya cette
[114:38] notion là qui est importante à connaître
[114:39] alors hop bougeait pas tac ça va être la
[114:42] fin du coût de ce live j'espère que ça
[114:44] vous en fait j'espère que le format vous
[114:46] plaît aussi parce que peut-être le live
[114:47] c'est pas non plus c'est pas non plus
[114:49] fou peut-être vous en foutez en fait
[114:51] alors peut-être aussi ça mériterait
[114:53] d'être un peu plus préparés aussi là
[114:55] c'est vrai que je me suis je me suis dit
[114:56] bon les gars vendredi ont fait un live
[114:57] et je suis venu voilà avec ma [ __ ] et
[115:00] son couteau en fait c'est donc c'est pas
[115:01] forcément assez préparée par rapport à
[115:03] d'autres vidéos youtube où il ya du
[115:04] montage et tout donc fait moi quand même
[115:06] des retours que ce soit ici dans le
[115:08] chatt maintenant où que ce soit dans les
[115:10] commentaires
[115:10] dites-moi quand même si tout ça c'est si
[115:14] tout ça c'est un peu je sais pas un peu
[115:16] trop déstructurées pour vous je sais pas
[115:17] alors ce qui est intéressant ici c'est
[115:19] que je vous ai montré ce que moi je suis
[115:21] en train d'apprendre
[115:21] donc ce sur quoi moi même je suis un peu
[115:23] en galère en ce moment et ça je pense
[115:25] que ça fait ça quelque part aussi j'ai
[115:28] l'impression souvent que mes étudiants
[115:30] débutants ils sont alors peut-être ils
[115:32] sont ça dit que je sais pas mais ils
[115:33] sont heureux de voir que en fait le mec
[115:36] qui considère qui s'est tout lior et les
[115:39] a formés pendant des mois sur tel ou tel
[115:40] sujet mais en fait mais lui même il est
[115:42] en galère hongrie
[115:43] il sait pas où il va tu vois il en train
[115:45] d'étudier des sujets il en train de deux
[115:47] voilà de péter des câbles a essayé de
[115:49] voir des trucs qui sont ultra complexes
[115:51] et donc en fait peut-être ça rassure
[115:53] aussi certains d'entre vous en termes de
[115:54] débutants et tous de voir que ben non
[115:56] tout le monde galère en fait y'a pas que
[115:58] vous les gars enfin vous inquiétez pas
[116:00] vous n'êtes en galère nous on est en
[116:01] galère chacun est en galère à son niveau
[116:03] et je suis quand même quelqu'un qui va
[116:04] venir m'expliquer ici que ça fait 10 ans
[116:07] qui fait de l'exode mais il a peut-être
[116:08] à notre sujet sur lequel il est
[116:09] complètement en galère est donc vain moi
[116:12] ce que je vous propose du coup c'est
[116:13] qu'on se retrouve comme ça peut-être une
[116:14] fois par mois deux fois par mois
[116:16] tranquillement pour faire un live
[116:17] en tout cas je travaille sur de
[116:20] nouvelles vidéos là je vais retravailler
[116:21] sur la série on recrée symphonie et c
[116:24] est donc ce que je vous propose c'est
[116:26] qu'on se retrouve très bientôt j'espère
[116:27] que ça vous a plu
[116:28] n'hésitez pas à partager puisque la
[116:29] vidéo va elle restée en ligne et donc
[116:31] vous pourrez à partager auprès de vos
[116:32] proches sur vos réseaux etc et
[116:36] et donc alors pourquoi je me limite à
[116:38] deux heures parce que ça va pas non plus
[116:40] en plus et me dit il faut aller bouffer
[116:41] tu vois on va pas non plus tenir la
[116:43] journée en live c'est plus une émission
[116:45] qu'un stream je sais pas si vous
[116:47] comprenez un peu mon idée dans mon idée
[116:48] ici on est plus sur une émission
[116:49] d'accord on dit voilà tous deux
[116:52] vendredis par mois il ya deux vendredis
[116:54] par mois il ya les missions d'accord en
[116:55] live c'est pas un stream où j'en suis en
[116:57] mode je suis assis d'ailleurs je vois je
[116:58] suis debout et tous et pas en mode je
[116:59] suis assise et je fais des trucs et on
[117:00] discute ça ça pourrait se faire
[117:02] d'ailleurs le square ou sur une chose
[117:03] faire des petites discussions en tchat
[117:04] ça pourrait se faire avec plaisir à ce
[117:07] moment là on choisirait plutôt du switch
[117:08] que du youtube je pense mais oui ça
[117:10] pourrait se faire
[117:11] non je fais pas de marathon de douze
[117:13] heures je suis pas je m'appelle passard
[117:14] bosse je fais pas ce genre de choses
[117:16] mais en tout cas vraiment je vous
[117:19] remercie d'être venu ce vraiment sens en
[117:21] spectateur en direct pour un sujet où
[117:23] c'est mal organisé ou sur une galère
[117:25] devant vous c'est vraiment très plaisant
[117:26] vraiment beaucoup belge est une chaîne
[117:28] twitch alors pour ceux qui le
[117:29] demanderaient sur switch bas je vous
[117:32] donnerai l'adresse dans le chat mais
[117:33] c'est twitch point tv slash l or donc
[117:36] elles l'ignorent avec deux i c est l or
[117:39] c'est en bref on s'en fout en fait de la
[117:41] chaîne tweets pour l'instant les pattes
[117:42] du taux active mais vous pouvez y aller
[117:43] au cas où et n'oubliez pas donc de
[117:46] suivre les ressources je vous donnerai
[117:47] aussi en description de la vidéo les
[117:49] slides que j'ai fait et ben du coup ben
[117:52] j'ai envie de vous dire vraiment trouver
[117:53] des ressources par rapport à ça à
[117:54] regarder des conférences inscrivez-vous
[117:56] à la newsletter en mail où je vous
[117:57] envoie un peu des trucs intéressants
[117:59] et puis d'ici à ce qu'on se retrouve à
[118:01] vous avez vu qu'on est reconfirmer entre
[118:03] guillemets donc faites gaffe parce que
[118:04] ce que je dis dans mes vidéos youtube
[118:05] c'est vrai donc d'ici à ce qu'on se
[118:06] retrouve
[118:07] venez sur mon twitter sur nos réseaux
[118:09] sociaux etc ou à ce qu'on se voit dans
[118:11] la vraie vie si jamais on est parent
[118:13] confiné pour de bon n'oubliez pas des
[118:15] amis développé vous bien
