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