TubeSum ← Transcribe a video

Live : Architecture Hexagonale en PHP

Transcribed Jun 15, 2026 Watch on YouTube ↗
Intermediate 30 min read For: PHP developers with basic knowledge of OOP and frameworks like Symfony or Laravel who want to learn about hexagonal architecture and TDD.
23.2K
Views
546
Likes
81
Comments
13
Dislikes
2.7%
📈 Moderate

AI Summary

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

[00:00]
Introduction to the live stream

The host explains the format: sharing topics he is currently learning, including DDD, TDD, and hexagonal architecture. He acknowledges that his understanding is evolving and welcomes feedback.

[06:00]
UUIDs as identifiers

UUIDs allow generating unique identifiers without a database, enabling testing and development without a persistent store. They are useful in TDD where you start without a database.

[09:00]
Domain-Driven Design (DDD) basics

DDD emphasizes organizing code by business domain rather than technical layers. The host focuses on the concept of grouping code by functionality (e.g., blog, authentication) rather than by controllers, models, etc.

[14:00]
Test-Driven Development (TDD) overview

TDD involves writing a test before any production code, then writing just enough code to pass the test. The host notes that TDD requires a mindset shift and recommends resources like the willdurand community.

[16:00]
Principles of hexagonal architecture

The core idea is separation of concerns and decoupling. Infrastructure (frameworks, databases) should be details; the business logic (the hexagon) should be framework-agnostic and testable.

[21:00]
Benefits of hexagonal architecture

Delaying technical decisions, ease of evolution (changing frameworks or databases without touching business logic), and improved testability.

[28:00]
Live coding setup

The host sets up a PHP project with pest (testing library), phpunit-watchers (auto-test on file save), and creates a domain folder structure organized by feature (blog).

[37:00]
Writing a use case test

The host writes a test for creating a post, defining the expected behavior: a CreatePost use case that takes post data and returns a Post entity.

[44:00]
Implementing the CreatePost use case

The CreatePost class is created in the 'usecases' folder. It receives a PostRepositoryInterface (a port) via constructor injection and uses it to save the post.

[53:00]
Creating the Post entity

The Post entity has properties: title, content, publishedAt (nullable DateTime), and a UUID (generated via uniqid if not provided).

[59:00]
In-memory repository for testing

An InMemoryPostRepository is created in the test folder to simulate a database. It implements PostRepositoryInterface and stores posts in an array.

[64:00]
Introducing the port (interface)

The PostRepositoryInterface is defined in the 'ports' folder inside the domain. It declares save() and findOne() methods. The use case now depends on this interface, not a concrete class.

[71:00]
PDO repository implementation

A PdoPostRepository is created that implements PostRepositoryInterface using MySQL. It uses PDO to insert and select posts, demonstrating that the use case works with a real database.

[88:00]
Validation with lazy assertions

The host adds validation to the CreatePost use case using the 'beberlei/assert' library. If data is invalid, a custom InvalidPostDataException is thrown.

[101:00]
Creating a controller in the infrastructure layer

A CreatePostController is built in the 'infra' folder. It handles HTTP requests, uses the CreatePost use case, and returns a response. This demonstrates the separation between domain and infrastructure.

[114:00]
Conclusion and recap

The host summarizes that the domain folder is the hexagon, and the infra folder is the outside. The architecture allows easy swapping of frameworks and databases.

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

Clickbait Check

90% Legit

"Title accurately describes the content: a live stream about hexagonal architecture in PHP with live coding."

Mentioned in this Video

Tutorial Checklist

1 28:00 Set up a PHP project with Composer and install pest, phpunit-watchers, and symfony/http-foundation.
2 30:00 Create a domain folder structure organized by feature (e.g., blog) with src and test subdirectories.
3 32:00 Configure phpunit-watchers to monitor the domain folder and auto-run tests on file changes.
4 37:00 Write a test for the CreatePost use case: instantiate CreatePost with an in-memory repository, execute with post data, and assert the returned Post is correct.
5 44:00 Implement the CreatePost class in the usecases folder. It should receive a PostRepositoryInterface via constructor injection and call save() in its execute() method.
6 48:00 Create the Post entity with properties: title, content, publishedAt (nullable DateTime), and a UUID (generated via uniqid if not provided).
7 59:00 Create an InMemoryPostRepository in the test folder that implements PostRepositoryInterface, storing posts in an array.
8 64:00 Define the PostRepositoryInterface in a 'ports' folder inside the domain, declaring save(Post $post) and findOne(string $uuid) methods.
9 71:00 Create a PdoPostRepository that implements PostRepositoryInterface using PDO to insert and select posts from a MySQL database.
10 88:00 Add validation in CreatePost using beberlei/assert: ensure title is not empty and content has minimum length. Throw InvalidPostDataException on failure.
11 101:00 Create a CreatePostController in the infra folder that handles HTTP requests, uses the CreatePost use case, and returns a response.

Study Flashcards (10)

What is the main purpose of using UUIDs as identifiers?

easy Click to reveal answer

UUIDs allow generating unique identifiers without a database, enabling testing and development without a persistent store.

06:00

What does DDD emphasize in code organization?

medium Click to reveal answer

Organizing code by business domain (functionality) rather than by technical layers (controllers, models, etc.).

09:00

What is the core principle of hexagonal architecture?

medium Click to reveal answer

Separation of concerns and decoupling: infrastructure (frameworks, databases) should be details; business logic should be framework-agnostic.

16:00

What is a 'port' in hexagonal architecture?

hard Click to reveal answer

An interface defined inside the domain that acts as a contract for external adapters (e.g., repository interface).

64:00

What is the role of the InMemoryPostRepository in testing?

medium Click to reveal answer

It simulates a database in memory, allowing tests to run without a real database, and implements the PostRepositoryInterface.

59:00

What does the CreatePost use case receive via constructor injection?

hard Click to reveal answer

A PostRepositoryInterface (a port) to decouple from concrete repository implementations.

44:00

What library is used for validation in the live coding?

easy Click to reveal answer

beberlei/assert (lazy assertions).

88:00

What is the benefit of delaying technical decisions in hexagonal architecture?

medium Click to reveal answer

You can code business logic without deciding on frameworks or databases upfront, making the system more flexible.

21:00

What is the TDD cycle described?

easy Click to reveal answer

Write a test before any production code, then write just enough code to pass the test, and never write code not required by a test.

14:00

What is the purpose of the 'infra' folder in the project?

medium Click to reveal answer

It contains infrastructure code (controllers, templates, etc.) that depends on the domain but is outside the hexagon.

101:00

💡 Key Takeaways

⚖️

Separation of concerns

Core principle of hexagonal architecture: infrastructure is a detail, business logic is independent.

16:00
💡

Delaying technical decisions

Allows focusing on business value without being locked into frameworks early.

21:00
🔧

Ports and adapters pattern

Demonstrates how interfaces (ports) decouple domain from external implementations (adapters).

64:00
🔧

Validation with lazy assertions

Shows how to add business rule validation inside the use case, throwing a custom exception.

88:00
💡

Hexagon vs infrastructure

Clear summary: domain folder is the hexagon, infra folder is the outside; they communicate via ports.

114:00

✂️ Creator Tools: Viral Hooks

AI-generated clip ideas for Shorts based on the transcript

Pourquoi l'architecture hexagonale ?

45s

Explique simplement le concept d'architecture hexagonale et son intérêt pour les développeurs.

▶ Play Clip

DDD et organisation par domaine

60s

Montre comment organiser le code par fonctionnalité plutôt que par technicalité, une approche clé du DDD.

▶ Play Clip

TDD : coder après les tests

60s

Résume le principe du TDD de manière accessible, ce qui attire les développeurs curieux.

▶ Play Clip

Les avantages de l'architecture hexagonale

60s

Liste les bénéfices concrets : retarder les choix techniques, faciliter les évolutions, indépendance du framework.

▶ Play Clip

Live coding : créer un blog en PHP

60s

Début du live coding, moment pratique où le spectateur voit la théorie mise en application.

▶ Play Clip

[00:00] donc oui comme quelqu'un l'a dit dans le

[00:01] chat ça ressemble un peu aux premières

[00:03] séries qualifié anthony beck alors

[00:05] l'idée c'est vraiment de vous montrer

[00:08] des choses sur lesquelles je suis en

[00:10] train d'évoluer en ce moment des sujets

[00:11] qui me trotte dans la tête depuis

[00:13] quelques années quelques mois et que

[00:15] maintenant j'ai le temps de mettre en

[00:17] oeuvre d'essayer de comprendre et c est

[00:19] alors bon on va partir d'un principe

[00:21] tout ce que je vais dire et quand même

[00:23] sujet à caution puisque c'est des choses

[00:24] que j'apprends c'est jeu j'essaye de

[00:26] d'être le meilleur possible

[00:28] j'essaye de bien comprendre ce qu'on me

[00:29] raconter tout et d'ailleurs il faut que

[00:31] je remercie beaucoup les gens qui sont

[00:33] sur twitter qu'ils sont heureux sur mes

[00:36] réseaux sociaux et qui m'aident dans ces

[00:38] sujets là donc non seulement me donnant

[00:39] des lectures dans des vidéos

[00:41] après évidemment je vous donnerai des

[00:42] ressources et vous allez voir le

[00:44] sommaire de tout ce dont on a parlé

[00:45] alors deux poids on va parler

[00:47] aujourd'hui

[00:48] qu'est ce qu'on a ici montrée moins ça

[00:49] alors aujourd'hui on va parler

[00:51] bon en gros de l'hexagone et de tout le

[00:55] reste de tout ce que je suis en train

[00:56] d'étudier en ce moment alors qu'est ce

[00:58] que c'est que cette histoire d'exagon

[00:59] qui d'ailleurs a priori est un hexagone

[01:01] que parce que on a choisi sa

[01:04] arbitrairement

[01:05] merci g n pour ta motivation et ta

[01:08] bienveillance à sablé plaisent et donc

[01:10] on va discuter de tout ça donc l'idée

[01:12] encore une fois c'est de vous montrer

[01:13] qu'est ce que j'apprends je pense que

[01:14] c'est une série qu'on va faire vrai mais

[01:15] je pense pas une fois par mois ça serait

[01:17] bien de voir un peu différent nouveau

[01:18] sujet que je découvre et dont je discute

[01:20] avec vous donc n'hésitez pas s'il ya un

[01:22] souci

[01:23] vous me le dites si je dis une grosse

[01:25] connerie vous le dit et alors sur tout

[01:26] ce qui est intéressant c'est que

[01:27] j'espère que la vidéo même ceux qui

[01:29] peuvent pas la voir en live doctorale

[01:30] d'autres qui sont calés la verrons plus

[01:32] tard c'est sûr que je vais envoyer dans

[01:34] différentes chanel cela que je fréquente

[01:37] pour qu'on me dise oui où j'ai foiré où

[01:39] j'ai pas compris

[01:40] alors du coup les intérêts du moment les

[01:43] intérêts du moment c'est en gros qu'est

[01:44] ce que je suis en train d'étudier entre

[01:45] man et ça faisait un petit moment on

[01:47] voit ici des sujets qui traîne depuis

[01:48] quelques années sur youtube c'est des

[01:50] sujets que ça ferme tout le monde

[01:51] j'aimerais bien voir les étudier et

[01:54] alors notamment en tout premier un petit

[01:55] sujet l'utilisation du

[01:57] des alors les une idée on va voir deux

[01:59] secondes ce que c'est mais j'ai compris

[02:01] du coup dernièrement pourquoi on

[02:03] utilisait salon il ya plein d'autres

[02:05] raisons mais j'utilise j'utilise des eu

[02:08] l'idée depuis quelques temps et j'ai

[02:10] compris pourquoi ça serait bien d

[02:11] utiliser donc je vais vous expliquer un

[02:13] peu de quoi ça parle

[02:13] alors d'aider des bons domaines dreams

[02:16] and design donc ça c'est un truc qui

[02:17] traînent en gros le mec a écrit son

[02:19] bouquin eric evans choix qui s'appelle a

[02:21] écrit un bouquin sur le dd d une façon

[02:23] de concevoir vos projets en termes de

[02:25] développement et donc ce qui est écrit

[02:27] en 2004 pour vous dire donc moi j'étais

[02:30] en 2004 et en bac +2 et alors évidemment

[02:34] on n'a jamais parlé et ensuite dans les

[02:36] autres entreprises où j'ai travaillé et

[02:37] puis ensuite quand j'étais freelance et

[02:39] quand j'étais chef d'entreprise et quand

[02:40] j'étais au sri lanka évidemment on n'a

[02:42] pas l'occasion particulièrement de

[02:43] rencontrer ce genre de terme genre tout

[02:45] ça ça a du sens dans de gros projets et

[02:48] sûrement d'autres des puristes vont bien

[02:50] ça a du sens aussi dans les petits

[02:51] projets graduation mais met donc si vous

[02:53] êtes puristes déjà partie du passé vous

[02:54] avez choqué pendant toute cette vidéo ça

[02:56] c'est sûr voilà commencez pas à casser

[02:57] les bonbons

[02:58] vous allez être choqué c'est pas grave

[02:59] et donc le ddd c'est une organisation de

[03:02] votre code et de votre est plutôt de

[03:04] votre façon de penser votre projet et

[03:06] donc on va en parler un tout petit peu

[03:07] mais moi je vais pas parler du concept

[03:09] de ddd avec les bandits de contexte et

[03:12] c'est ça je suis pas du tout encore mais

[03:15] plutôt dans l'organisation de notre code

[03:17] ça m'intéresse alors au niveau ensuite

[03:19] bien sûr

[03:20] vous savez c'était mon dernier live je

[03:22] m'intéresse beaucoup en ce moment au

[03:23] test driven development talent acceptant

[03:25] 16 riven développement trop bieker

[03:27] driven development donc tout ça c'est

[03:28] des méthodologies d'accord de

[03:31] de création de code dont le but est de

[03:32] faire émerger le code via le test à

[03:35] différents niveaux de tests etc

[03:37] mais le but c'est vraiment d'écrire du

[03:39] code après avoir éveillé des

[03:41] spécifications on teste ça aussi on en

[03:43] reparlera et du coup on en arrive au

[03:45] sujet du jour la clean architecture ou

[03:48] l'hexagone à l'architectural attention

[03:49] pour les puristes encore une fois je

[03:51] sais bien que c'est pas les deux

[03:52] forcément d'accord les deux même si j'ai

[03:55] bien compris donc on a là l'hexagone

[03:58] architecture qui est quelque chose qui

[03:59] date des années 2000 grosso modo et je

[04:01] sais plus déjà qui est la personne qui a

[04:03] proposé cette architecture ou l'

[04:05] architecture port adapteur on va en

[04:07] parler et on a ensuite la clean

[04:09] architecture qui a été proposé par

[04:10] l'oncle bob si j'ai bien compté plus

[04:11] tard dans les années 2010 seront autour

[04:13] de 2015 mais franchement voilà je suis

[04:15] pas un bibliothécaire vacances chez pas

[04:17] qui a fait quoi quand on s'en fout

[04:18] l'idée c'est quand même d'avancer dans

[04:20] le perfectionnement nos architectures

[04:23] alors où est ce qu on en est alors oui

[04:27] quand même un petit préquelle à tout ça

[04:29] je vous donne quand même des petites

[04:30] nouvelles sur mon boulot vraiment la

[04:34] charge lente du moment c'est de terminer

[04:35] ma formation symphonie 5

[04:37] on est à peu près sûr 20 heures de

[04:39] contenu comme la première alors

[04:41] l'association n'est pas partis sur un

[04:42] build on n'est pas parti sur du airbnb

[04:44] on est parti sur les commerces

[04:45] je voulais voir la notion de paniers

[04:47] dans la session je voulais voir la

[04:48] notion de stripe dans vos applications

[04:50] symphonique alors c'est une application

[04:52] que fin c'est une formation pardon que

[04:54] j'ai design et pour les débutants et les

[04:56] intermédiaires

[04:57] l'idée c'est de dire il faut toujours

[04:59] que des gens qui me suivent puissent

[05:00] apprendre il faut pas que ce soit que

[05:02] les dividendes qu'ils puissent se

[05:03] rentrer là dedans et c'est sympa pour

[05:04] les débutants il faut aussi que les gens

[05:06] qui ont déjà fait des courses de

[05:09] symphonies etc puissent encore

[05:11] tranquillement apprendre des choses avec

[05:13] moi et donc ici vraiment l'un sur

[05:15] l'autre on est sur une approche vraiment

[05:16] différent de la première formation qui

[05:18] avec beaucoup de recul j ai regardé la

[05:20] première formation symphonique a déjà

[05:22] les plus à jour et surtout j'ai

[05:23] l'impression que moi ma façon

[05:26] déjà quatre ou cinq sessions de

[05:28] symphonies anguilard depuis ma première

[05:30] formation

[05:31] j'ai vraiment remis en place de nouveaux

[05:33] concepts pédagogiques pour apprendre

[05:35] avec mes apprenants et donc j'ai vu ce

[05:37] qui marche et ce qui marchait pas

[05:38] vraiment là je suis parti dans une

[05:40] approche différente où on va aller en

[05:41] profondeur dans symphonie tout en

[05:43] restant mal de l'époux accessible à tous

[05:44] et donc en apportant autant aux

[05:46] intermédiaires qui ont fait déjà un peu

[05:49] de symphonie que aux débutants qui en

[05:51] ont jamais fait donc voila mon idée

[05:52] c'était vraiment de partir là dessus ça

[05:53] c'est un truc qui sera finie dans

[05:54] quelques temps et bah quand ça sortira

[05:56] vous serez les premiers au courant non

[05:57] sur youtube évidemment vous serez les

[05:59] premiers au courant

[06:00] donc on peut passer aux premiers sujets

[06:02] d'intérêt du moment donc les sujets du

[06:04] moment ça va être donc les fameuses une

[06:06] idée qu'est ce que c'est ça je viens de

[06:08] passer deux heures mais on va les

[06:09] utiliser dans le live coton juste

[06:10] derrière alors qu'est ce que c'est que

[06:11] cette histoire du idée alors eu une idée

[06:13] le but c'est de donner un identifiant

[06:16] vous savez quand vous créez souvent un

[06:17] projet vous avez je sais pas moi vos

[06:18] entités en gros vos données que vous

[06:20] mettez dans des tables de base de

[06:21] données est souvent leurs identifiants

[06:23] c'est juste un automne très long c'est

[06:24] un numéro que la base de données va

[06:26] assigner automatiquement à un

[06:28] enregistrement

[06:28] ok alors quel est le problème avec ça le

[06:31] problème avec ça c'est que vous devez

[06:33] avoir une base de données pour que vos

[06:36] enregistrements est une identité est

[06:38] quelque chose qui nous permet de les

[06:39] identifier

[06:40] problème quand vous faites par exemple

[06:42] justement du test driven development

[06:45] quand vous commencez par tester des

[06:46] choses etc vous commencez sans base de

[06:48] données pourtant il vous faut malgré

[06:50] tout bain

[06:50] malgré toi un moyen d'identifier et

[06:53] donnait alors je sais bien que c'est pas

[06:54] le seul je sais que c'est pas de la

[06:56] seule raison pour laquelle on peut

[06:57] utiliser les humides et ya plein

[06:59] d'articles vous en donnerai

[06:59] éventuellement mais néanmoins mans c'est

[07:02] là que ça m'a choqué c'est quand je me

[07:03] suis dit je me suis mis à faire du test

[07:04] driven development que j'ai commencé à

[07:07] coder une fois que j'avais écrit et stg

[07:09] commencé sans environnement donc sans

[07:10] base de données sans rien et donc je me

[07:12] suis dit comment est ce que je pourrais

[07:13] simuler le fait que ben je sais pas si

[07:16] je fais un blog par exemple que mes

[07:17] articles et un identifiant alors qu'il

[07:19] ya pas de bases de données

[07:20] pour l'heure à signer et c'est là

[07:21] effectivement une gigue mais c'est ça

[07:23] fait des années que je vois parler d'une

[07:24] idée est ce que c'est pas le moment

[07:25] justement de les utiliser

[07:27] donc c'est eu l'idée ce sont des

[07:29] identifiants uniques qui vont pouvoir

[07:31] être générées et donc que vous allez

[07:33] pouvoir assigner vous même à vos

[07:35] enregistrements sans aide aucune base de

[07:37] données l'avantagent c'est quoi c'est

[07:38] que vous allez pouvoir du cours donnés

[07:40] un identifiant à des objets avant même

[07:43] de la base de données n'est pas le faire

[07:45] et alors l'autre avantage c'est que la

[07:46] base de données elle peut très bien

[07:47] gérer ses identifiants qui sont des

[07:49] longues chaînes de caractères ont pas

[07:51] forcément longue mais en tout cas qui

[07:53] sont des chaînes de caractères va

[07:54] pouvoir les gérer comme des clés

[07:55] primaire donc comme des identifiants

[07:57] donc ça aussi c'est un sujet très

[07:58] intéressante que j'ai commencé à

[08:00] regarder et et du combat que je me

[08:03] demande qu'est ce que vous en pensez si

[08:05] jamais vous avez un peu de un peu de

[08:07] retours d'expérience là dessus moi

[08:09] j'avais jamais utilisé ça mais c'est

[08:10] vrai que maintenant que je fais du valat

[08:12] que je me tantale hexagonal etc etc

[08:14] ça fait toujours plein n'hésitez pas

[08:17] donc hop je vais revenir ici bougeait

[08:19] pas une seconde c'est un réglage mixage

[08:21] et j'arrive avec vous tapez tac tac il

[08:24] est où ce compte il est là il

[08:27] la voilà l'idée c'est pas non plus que

[08:29] la musique est mon casse les couilles je

[08:31] la baisse si ça vous emmerde

[08:33] voilà donc l'idée c'est de pouvoir

[08:36] identifier des objets avant même que la

[08:38] base de données n'est donné un

[08:39] identifiant à ces objets là et donc ça

[08:41] veut dire que vous pouvez connaissant

[08:42] base de données et vous faire plaisir

[08:43] avec alors mon prochain sujet prochains

[08:47] sujets d'intérêt tak tak donc le ddd

[08:50] mais attention pas le dvd au sens où on

[08:53] l'entend vraiment passagers par le cor

[08:55] étudier je vous dis j'ai pas commander

[08:57] le livre le livre franchement il a l'air

[09:00] de faire 800 pages ça doit être un enfer

[09:02] pour un mec comme moi qui ne sait pas

[09:03] dire

[09:04] donc voilà par contre j'ai vu un

[09:05] milliard de conférence j'ai eu 1

[09:07] milliards d'articles

[09:08] donc voilà ça fait plaise mais je vais

[09:10] pas vous parler du concept de ddd en

[09:12] lui-même c'est-à-dire toute

[09:13] l'organisation tout le mindset qui a

[09:15] derrière le fait de discuter avec son

[09:16] client on le fait d'avoir des langages

[09:18] ubiquitaire le fait d'avoir des

[09:19] contextes et c'est tout ça vous pouvez

[09:20] l'étudier par vous même

[09:22] en plus je pense sans vraiment je pas

[09:24] vous d'accord personne ne prend rien de

[09:27] mal ici mais je pense pas que le public

[09:28] principalement sur ma chaîne soit entre

[09:31] guillemets à se poser ce genre de

[09:32] question pour l'instant par contre il y

[09:34] a quelque chose qui m'intéresse dans

[09:35] cette philosophie entre guillemets dans

[09:37] cette seconde architecture qui rappelle

[09:41] aussi les architectures used guys driven

[09:44] architecture en d'accord donc l'idée ici

[09:46] vous êtes d'accord avec moi vous faites

[09:48] du symphony par ailleurs c'est du

[09:49] symphony vous faites n'importe quel même

[09:50] le fera mourir fait du lard avaient fait

[09:52] n'importe quoi vous allez avoir un

[09:53] dossier contrôleur zèle avoir un dossier

[09:55] modèle vous allez avoir un dossier en

[09:56] titillant dossier repositories est en

[09: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

[1:00:01] attend de ce truc là

[1:00:02] ce repositories on attend de lui qu'il

[1:00:05] soit positionné dans mon new skies dans

[1:00:08] mon action de créer un poste et on

[1:00:10] attend de lui qu'il est une fonction

[1:00:11] find one ok donc la première des choses

[1:00:15] que je me dis c'est que je me dis que il

[1:00:17] faudrait dans mon action cluet poste que

[1:00:21] je lui passe l'article donc ici je vais

[1:00:23] venir dans mon club poste je vais dire

[1:00:26] que je vais recevoir un haut niveau de

[1:00:30] mon constructeur je vais recevoir une

[1:00:32] injection de dépendances

[1:00:33] in memory repositories ou là

[1:00:37] attendez je me suis trompé dans le monde

[1:00:38] la classe up in memory poste avait posé

[1:00:41] tories hélas ici tac tac tac c'est un in

[1:00:46] memory post repositories voilà je vais

[1:00:49] dire que je vais recevoir un mmoz

[1:00:51] riposte repositories que je vais appeler

[1:00:53] repositories on s'en fout ici ce que je

[1:00:57] vais faire c'est que je vais dire que je

[1:00:58] vais avoir une propriété protégé qui

[1:01:01] sera tout simplement un in memory post

[1:01:04] repositories et que je vais appeler

[1:01:05] poste repositories hockey est donc ici

[1:01:10] je vais me l'injecter je veux dire mon

[1:01:12] post repositories c'est égal oripeaux

[1:01:14] que vous me balancer lorsque vous me

[1:01:15] construise est tout simplement est ce

[1:01:18] qui veut dire que ici je vais être

[1:01:19] capable d'utiliser ce truc là

[1:01:21] donc qu'est ce que je vais dire je vais

[1:01:23] dire this flèche post repositories

[1:01:25] flèche et j'imagine un jour j'aimerais

[1:01:28] bien un jour avoir une méthode qui va

[1:01:30] s'appeler save et qui prendront part à

[1:01:32] mettre le poste tout simplement

[1:01:34] ok alors évidemment mais test ici ils

[1:01:37] vont exploser parce que j'ai fait plein

[1:01:39] de choses ici qui n'ont pas de sens

[1:01:40] alors par exemple déjà ne serait ce que

[1:01:42] dans mon test je fais appel à in memory

[1:01:45] post repositories sans avoir fait le

[1:01:46] youth donc je vais l'importer voilà le

[1:01:49] petit use his

[1:01:49] je vais sauvegarder et là maintenant

[1:01:51] j'ai une nouvelle erreur l'erreur c'est

[1:01:53] qu'il n'est pas de méthode save dans ce

[1:01:55] fameux post repositories donc je vous

[1:01:57] propose qu'on en créer une

[1:01:58] je vais créer ici une publics

[1:02:00] fonctionnent save hockey qui va recevoir

[1:02:03] un post up un poste qui s'appellera

[1:02:08] poste et qui qui retourneraient 1 qui

[1:02:11] retournera le poste auquel je sais pas

[1:02:13] pourquoi je fais ça mais sait-on jamais

[1:02:14] et donc ce que je veux dire c'est que

[1:02:16] dire écoute c'est très simple nous

[1:02:18] allons rajouter à notre tableau des

[1:02:21] postes un élément dont la clé ça sera

[1:02:23] l'identifiant unique de mon poste est

[1:02:26] l'élément ça sera le poste tout

[1:02:27] simplement et on retournera le poste lui

[1:02:29] même je vois pas trop l'intérêt mais

[1:02:31] sait-on jamais donc je vais balancer ça

[1:02:33] comme ça mais maintenant j'ai une

[1:02:35] nouvelle erreur

[1:02:36] la nouvelle erreur c'est juste attention

[1:02:37] nous ne trouvons pas d'antan

[1:02:39] repositories fonction find one ok alors

[1:02:43] on est parties publiques fonctionnent

[1:02:47] find one

[1:02:49] ici on va dire qu'on veut une string qui

[1:02:52] sera un eu l'idée et on va dire que ça

[1:02:54] retourne un poste ou pas ça peut

[1:02:56] retourner nul si pas rien tu me dis fine

[1:02:58] douanes et tu me passes un idée qui

[1:02:59] n'existent pas alors je te balance ray

[1:03:02] nul si par contre ça exige je te balance

[1:03:03] ray le poste en question est donc ce que

[1:03:05] je vais te retourner c'est ce qu'il y a

[1:03:08] dans mon tableau des postes à la clé une

[1:03:10] idée messi a rien là dedans je te

[1:03:14] retournes nul tout simplement je vais

[1:03:16] sauvegarder et là qu'est ce que je vois

[1:03:17] que mes tests ils sont passés alors

[1:03:19] qu'est ce que ça veut dire ça veut dire

[1:03:20] ici là on a un test qui pour le coup

[1:03:23] tient la route on a une source de

[1:03:25] données peu importe ce qu'elle est est

[1:03:27] ce que c'est une base de données est ce

[1:03:29] que c'est du gie stone est ce que c'est

[1:03:30] un tableau peu importe on a une source

[1:03:32] de données on l'a passée à notre action

[1:03:35] et quand on a exécuté notre action gala

[1:03:37] sources de données a retenu a maintenu

[1:03:39] l'information magnifique c'est vraiment

[1:03:41] ce que je voulais alors maintenant j'ai

[1:03:43] une question à vous poser

[1:03:45] pour l'instant mon used guys ici il

[1:03:49] n'est capable de travailler que avec une

[1:03:51] source de données qui s'appelle

[1:03:52] in-memory post repositories il n'est pas

[1:03:55] capable de travailler

[1:03:57] il n'est pas capable de comment dire

[1:04:01] n'est pas capable de travail excusez moi

[1:04:02] ce que j'aurais à le chat en même temps

[1:04:03] c'est dessus à peu près ce que vous

[1:04:04] dites il n'est pas capable de travailler

[1:04:07] avec une autre source de données avec

[1:04:09] une autre classe

[1:04:09] il dépend ici d'une source de données

[1:04:11] qui est le in memory post repositories

[1:04:13] est-ce que c'est flexible cette histoire

[1:04:15] a priori si on manque grandement grand

[1:04:17] demande de flexibilité

[1:04:19] comment est-ce qu'on pourrait gagner

[1:04:20] d'un coup une puissance phénoménale en

[1:04:23] termes d'évolutivité de notre code et

[1:04:24] même tout simplement en respectant

[1:04:26] propre très simple on va respecter juste

[1:04:29] un principe de base le principe

[1:04:31] d'inversion des dépendances est ce qu'on

[1:04:33] va se dire dans nos têtes à chaque fois

[1:04:34] qu'on va codé on va dire il vaut mieux

[1:04:36] dépendre d'une interface il vaut mieux

[1:04:39] dépendre d'une abstraction que d'une

[1:04:41] concrétions que d'une implémentation ok

[1:04:43] donc on est parti

[1:04:45] si vous êtes prêt on va mettre en place

[1:04:47] ici une abstraction de façon à ce que

[1:04:49] mon used guys puisse utiliser n'importe

[1:04:52] quel implémentation que je vais pouvoir

[1:04:53] lui donner derrière alors voilà ce que

[1:04:55] je vous propose ses abstractions ces

[1:04:58] fameuses d'abstraction est ce que

[1:04:59] j'arrive à le retrouver surtaxe sur mon

[1:05:01] canot valin ses abstractions up est ce

[1:05:05] que j'arrive à le trouver voilà ces

[1:05:06] abstractions c'est ce qu'on va appeler

[1:05:08] des porcs dans notre hexagone ok donc

[1:05:11] pour l'instant monde aussi src c'est mon

[1:05:13] hexagone hockey est pour l'instant j'ai

[1:05:16] je vois que mon dossier src donc mon

[1:05:18] hexagone ici il utilise une classe qui

[1:05:21] n'est pas dans mon hexagonal est dehors

[1:05:23] ok et donc en réalité ce qui va falloir

[1:05:26] que je fasse

[1:05:26] c'est que j'utilise une interface que je

[1:05:29] vais garder dans mon hexagone on appelle

[1:05:30] ça un port et ensuite je pourrai

[1:05:33] brancher dessus n'importe quel

[1:05:34] implémentation donc même visuellement

[1:05:36] france et pas forcément visibles comme

[1:05:38] ça mais regardez je vais venir dans mon

[1:05:41] dossier src je me crée un nouveau

[1:05:42] dossier

[1:05:43] je vais l'appeler comme j'ai pas

[1:05:44] d'imagination jeune crétin je vais

[1:05:45] l'appeler port hockey et dans mes pores

[1:05:49] je me crée un nouveau port que je vais

[1:05:51] appeler poste repositories interface

[1:05:55] pour le php

[1:05:56] alors ça s'il nous manque la thur que

[1:05:57] j'utilise moi d'accord mais vous pouvez

[1:06:00] ne pas l'utiliser dans d'autres dossiers

[1:06:02] quand on est quand on est sur du six

[1:06:05] chars quand on est sur du java enfin les

[1:06:07] gens dans d'autres met par exemple qui

[1:06:08] préfixe les interfaces avec 1

[1:06:09] non pas remplies ibos tripoli tories bon

[1:06:12] moi je suis partie comme sa poche

[1:06:14] repositories interface donc on est parti

[1:06:16] là dessus nous sommes dans le nem space

[1:06:19] donc nous sommes dans le domaine blog

[1:06:22] or et nous créons une interface qui va

[1:06:25] s'appeler poste repositories interface

[1:06:29] alors cette interface c'est un contrat

[1:06:31] donc cette interface et un contrat on va

[1:06:35] demander tout simplement à n'importe qui

[1:06:37] qui veut implémenter cette interface

[1:06:39] devrait posséder une fonction save qui

[1:06:43] va recevoir un poste d'accord et qui

[1:06:47] retournera un poste que j'ai demandé oui

[1:06:49] est ce que ça vaut le coup ça vaut le

[1:06:52] coup de retourner le poste ou pas qu'est

[1:06:53] ce que vous en pensez

[1:06:54] en fait je pense qu'on s'emballe et

[1:06:56] courir çà retournera est ce que est ce

[1:07:01] qu'on pourrait laisser si on s vide le

[1:07:03] si on laisse vide le retour ici est ce

[1:07:06] qu'avec toutes leurs conneries de

[1:07:07] contrats variance et c'est une

[1:07:09] implémentation pourrait renvoyer ce

[1:07:11] qu'elle souhaite renvoyer si elles le

[1:07:13] souhaitent

[1:07:13] bon je sais pas faudra voir

[1:07:16] et ensuite on aura une fonction qui va

[1:07:19] s'appeler find one

[1:07:20] d'ailleurs elle pourrait s'appeler find

[1:07:21] the one or nul est donc ici ce qu'on

[1:07:24] pourrait avoir ses dires ben tu va

[1:07:25] m'envoyer un hub idées et moi ce que je

[1:07:28] vais te renvoyer c'est un poste où pas

[1:07:30] parce que peut-être il n'y a pas de

[1:07:31] poste avec cette idée là donc on va

[1:07:33] sauvegarder cette interface telle

[1:07:34] qu'elle est on va venir dire que notre

[1:07:37] in memory post repositories il est très

[1:07:40] beau il est très sympa et on va lui dire

[1:07:42] que il se réclame de l'interface qui

[1:07:45] s'appelle poste repositories interface

[1:07:48] alors là évidemment théoriquement oui

[1:07:52] donc je vois que ça marche

[1:07:53] dire que si l'interface de demandes de

[1:07:55] nos vins si l'interface ne précise rien

[1:07:57] tu as le droit de renvoyer ce que tu

[1:07:58] veux ça c'est très très propre or ça je

[1:08:00] vais l'enlever on s'en fout on va

[1:08:02] sauvegarder et donc la dernière chose

[1:08:05] qu'on va faire c'est tout simplement que

[1:08:06] ici au niveau du créé de postes au lieu

[1:08:08] de demander à se faire livrer un hymne

[1:08:11] et maury repositories d'accord c'est à

[1:08:13] dire que je ne peux travailler que avec

[1:08:14] une source de données qui est en mémoire

[1:08:15] non donnez moi n'importe quelle source

[1:08:19] de données à partir du moment où c'est

[1:08:21] un poste repositories

[1:08:22] face tout simplement hop je vais

[1:08:27] sauvegarder et on va aller voir si nos

[1:08:29] tests continuent de passer l'alcootest

[1:08:31] ils sont pas contente du tout pourquoi

[1:08:33] ils sont pas contents c'est est toc toc

[1:08:35] toc

[1:08:37] non alors là c'est moi qui ai fait une

[1:08:39] grosse connerie c'est que j'ai mis qu'on

[1:08:44] était dans le néant space postes au lieu

[1:08:45] de porc ici et ça donc c'est une très

[1:08:48] grosse bêtise

[1:08:49] donc ici partout où j'ai appelé ça c'est

[1:08:52] por c'est pas poste excusez-moi tac

[1:08:55] alors bougez parents je corrige un peu

[1:08:56] toutes ces conneries tableau tac tac ça

[1:08:59] c'est ici et là ici c'est bien hors tac

[1:09:02] et voilà ça y est ça passe donc c'était

[1:09:04] juste un problème de nom de dead space

[1:09:07] des espaces de noms donc je vais

[1:09:09] reprendre du coup encore une fois depuis

[1:09:11] le début nous avons ici un new skies que

[1:09:16] nous avons nourri avec une source de

[1:09:17] données on le dit voilà les données tu

[1:09:18] va les mettre là bas ok ensuite tu va

[1:09:23] exécuter ses new skies et on va vérifier

[1:09:25] si ça a bien fonctionné

[1:09:26] on a écrit le test on a vu que ça marche

[1:09:29] et ça marche très bien on est très

[1:09:31] heureux mais quelque chose à emporter

[1:09:33] encore plus

[1:09:35] tac tac tac tac tac tac on a apporté

[1:09:38] encore plus c'est qu'on a apporté une

[1:09:39] abstraction qui fait que en réalité je

[1:09:42] peux passer à mon used guys n'importe

[1:09:44] quelle source de données il va

[1:09:45] fonctionner donc ce qui veut dire que

[1:09:47] derrière si j'ai envie de faire une base

[1:09:48] de données sql

[1:09:49] je pourrais du passé un reee poesy

[1:09:51] tories qui fasse du pdo vous voulez

[1:09:53] qu'on fasse un test d'ailleurs

[1:09:55] et vous savez quoi on est fous on est

[1:09:59] fou on est des malades on est des maboul

[1:10:03] aller balance moi une petite interface

[1:10:08] alors par contre tu es sympa est-ce

[1:10:11] qu'il ya moyen que tu me fasses un truc

[1:10:12] jolie en fait puisque moi en fait j'ai

[1:10:14] demandé un métro l'un est ce qu'on peut

[1:10:17] avoir un autre thème joly parce que je

[1:10:20] sens là ils vont en fait sur youtube il

[1:10:21] faut voilà voilà voilà a fait ne fait

[1:10:23] pas passer pour un con non plus ok super

[1:10:25] on va se créer une nouvelle base de

[1:10:27] données

[1:10:28] on va l'appeler exams log deux cortèges

[1:10:32] on s'en fout lutter f8 général ces idées

[1:10:37] nous sommes allé j'y connais rien me

[1:10:41] dites pas qu'il faut tel ou tel

[1:10:42] collation j'en sais rien ou est-ce qu'on

[1:10:45] est ici sur le chat je regarde qui est

[1:10:46] pas de questions particulières pourquoi

[1:10:48] tu ne suis pas fait acheter storm parce

[1:10:49] que je n'ai pas payé voilà est ce que

[1:10:51] est ce que ça vaut le coup ou est-ce que

[1:10:53] franchement c'est très bien la justice

[1:10:54] est trop trop bien mais là je suis chaud

[1:10:57] en lega pour l'instant moi je motive et

[1:10:59] scotch content on va créer une table

[1:11:02] qu'on va appeler postes le nombre de

[1:11:04] colonnes ces quatre ou cinq je me

[1:11:05] rappelle plus cinq colonnes 1 et pop

[1:11:08] donc ça vous voyez c'est une question

[1:11:09] qui vient derrière lamont logiciel il

[1:11:11] marche la base de données c'est autre

[1:11:12] chose on est parti on va dire que un

[1:11:14] poste c'est un eu l'idée ok donc c'est

[1:11:17] du var car je sais pas moi alors je sais

[1:11:19] pas combien une norme vous me direz 1,8

[1:11:21] et c'est forcément le temps de caractère

[1:11:22] mais comme je la connais pas encore bien

[1:11:24] je vais partir sur du 255 un article

[1:11:27] c'est aussi un title un article c'est

[1:11:29] aussi un conte tent est donc ici on se

[1:11:34] rassure du times ou mais non qu'elle

[1:11:38] compte c'est du texte c'est en dessous

[1:11:39] qu on est sûr de la date times et un

[1:11:41] article c'est aussi une date de

[1:11:42] publication public tu as tu es là c'est

[1:11:44] effectivement une date times

[1:11:46] l'op voilà donc la sai et hop je vais

[1:11:50] juste rajouter un index de claix

[1:11:51] primaire sûrement eu l'idée et on est

[1:11:55] parti on a une table voilà on a notre

[1:11:59] table poste et on va voir maintenant si

[1:12:02] je suis capable de faire passer le même

[1:12:03] test mais cette fois ci avec un stockage

[1:12:05] en base de données

[1:12:05] donc qu'est ce qu'il me faut il me faut

[1:12:08] un repositories qui si je veux le passé

[1:12:11] à mon cou y postent ici c'est ça qui est

[1:12:13] important les amis vraiment pont surtout

[1:12:15] pour les débutants comprennent pas trop

[1:12:16] ma classe cris et de postes ça regardez

[1:12:19] pour être construite elle attend

[1:12:21] n'importe quel objet qui a représentent

[1:12:24] une interface post repositories donc ça

[1:12:27] c'est vraiment si le point clé de tout

[1:12:29] ce live sans ça le live vous le laissez

[1:12:31] tomber il sert à rien donc le point clé

[1:12:33] c'est de dire je vais avoir besoin ici

[1:12:35] d'une interface du d'un objet pardon qui

[1:12:38] implémentent l'interface post

[1:12:40] repositories donc ce que je vous propose

[1:12:42] dans nos tests ici on va se créer un

[1:12:43] nouvel adaptateur d'accord et on va

[1:12:46] l'appeler pdo poste repositories ok je

[1:12:52] vais mettre là-dedans je me créais même

[1:12:53] space se nomme space ça sera donc que je

[1:12:56] dise pas de conneries domain blog test

[1:13:02] adapters très bien et nous allons avoir

[1:13:04] ici une classe qui s'appelle pdo poste

[1:13:07] repositories et qui implémentent dont

[1:13:11] qui signe le contrat qu'ils doivent

[1:13:12] mettre en place ce qui est demandé par

[1:13:14] la poste repositories interface qu'est

[1:13:16] ce qu'elle me demande cette coquine elle

[1:13:18] me demande une publics fonctionnent save

[1:13:20] et elle me demande une public fonction

[1:13:23] find donc là vous voyez en fait c'est ça

[1:13:27] qui est magnifique c'est que imaginé ça

[1:13:29] fait deux mois que le projet est en

[1:13:31] ligne

[1:13:31] et là on vient ici on me dit il faut que

[1:13:34] tu crées maintenant on veut passer sur

[1:13:35] du mysql est sûre du pdo faut que tu te

[1:13:37] voilà il faut que tu fous qui a hélas

[1:13:39] donc moi je dis ok c'est quoi la

[1:13:41] facilité de changement de mon projet je

[1:13:44] veux faire du pdo mais qui a pas de

[1:13:45] problème voilà pdo post repositories qui

[1:13:48] implémente le post repositories je suis

[1:13:50] guidé par l'interface l'interface me dit

[1:13:53] faut une fonction save une fonction find

[1:13:54] one tu as juste à mettre le code qui va

[1:13:56] bien dedans

[1:13:57] ok donc moi parce que je propose c'est

[1:13:59] un truc tout con c'est aussi bête que ça

[1:14:02] quand vous allez me crée déjà moins ce

[1:14:05] que je vais avoir c'est que je vais

[1:14:06] avoir besoin d'une connexion à la base

[1:14:10] de données donc quand vous allez me crée

[1:14:12] alors là je vais pas du tout le rendre

[1:14:14] paramétrable et toi je vais aller très

[1:14:15] vite

[1:14:16] vous allez instanciés une connexion à la

[1:14:20] base de données via pdo je veux dire pdo

[1:14:21] c'est égal à un niveau pdo et je vais

[1:14:24] partir tout simplement tranquillou bilou

[1:14:26] je vais partir tac tac tac tac

[1:14:28] partez pas en débat sur les meilleures

[1:14:30] vidéos prenez les ide qui vous plaisent

[1:14:33] à la cfu c'est faux que vous ayez pas

[1:14:36] cette fibre altruiste l'un est gentil

[1:14:40] alors que tu alors je vous dis d'être

[1:14:41] méchant non ça voilà soyez méchant

[1:14:43] jetez-vous défions dites-vous que

[1:14:44] phpstorm c'est mieux que le reste et

[1:14:46] c'est au moins ça fait de l'activité

[1:14:49] et puis ça vous fait voilà ça vous fait

[1:14:50] réfléchir un peu c'est le pdo

[1:14:54] l'architecturé hexagonal non pdo c'est

[1:14:57] juste une classe de connexion à la base

[1:14:58] de données ok donc à ici je vais partir

[1:15:01] en balançant une collection à la pop

[1:15:04] mais tu dégages syrie s'il te plaît à

[1:15:07] l'époque tu dégages voilà on est reparti

[1:15:09] donc je vais lancer ici une connexion

[1:15:12] excusez moi y'a du coup il ya syrie qui

[1:15:14] c'est qui est implémenté dans l'histoire

[1:15:16] aussi donc mysql poste égal localhost db

[1:15:21] name égal si je dis pas de bêtise j'ai

[1:15:23] appelé ça exams blog underscore tests et

[1:15:26] du coup le cas recettes qui est de

[1:15:28] lutter f8 ok donc ça c'est prêt

[1:15:31] maintenant ce qu'on va faire c'est qu'on

[1:15:33] va travailler aussi en tant que route et

[1:15:35] le mot de passe ses routes et on va

[1:15:38] préciser aussi quelques options donc pas

[1:15:40] l'herbe par exemple le fait que l'on

[1:15:42] veuille s'il ya des erreurs avoir des

[1:15:46] exceptions donc en est sûre pdo airs

[1:15:49] mode exception voilà parfait donc là

[1:15:51] j'ai ma connexion à la base de données

[1:15:53] maintenant on me dit tu dois être

[1:15:54] capable de sauvegarder un poste très

[1:15:57] bien pas de problème donc ce que je vais

[1:15:58] faire je préparais ici une requête avec

[1:16:01] mon pdo primaire up

[1:16:05] donc la requête ce serait tout

[1:16:07] simplement un que je dise pas de bêtises

[1:16:09] la requête ce serait tout simplement

[1:16:11] quoi ça serait insert into on va

[1:16:15] utiliser la notation d'insertion de

[1:16:16] mysql temps confère insert into poste

[1:16:18] cet élan est partie title ce sera égale

[1:16:22] à elle-même les soldeurs contente ça

[1:16:25] sera égale à elle-même les soldeurs une

[1:16:29] idée pardon ce sera égal à et là je me

[1:16:31] plais soldeurs et enfin qu'est ce qu'on

[1:16:34] voulait d'autres qu'est ce qu'on voulait

[1:16:37] d'autres qu'est ce qu'on voulait

[1:16:43] d'autres bah oui je suis con la publie

[1:16:45] chez date les amis alors alors plus

[1:16:47] [ __ ] et ate qui sera égal à un plex

[1:16:50] holder public j'ai hâte

[1:16:51] ok donc là j'ai préparé ma requête allez

[1:16:54] on va balancer on va faire un coup et

[1:16:56] riz flèche execute et ici on doit lui

[1:16:58] passer nos places holder donc je vais

[1:17:00] dire écoute pour le title c'est facile

[1:17:01] hein ces postes flèche title ok je vais

[1:17:05] lui dire aussi pour le contest c'est

[1:17:07] facile c'est poste flèche confiante je

[1:17:11] vais lui dire ici pour le idée là aussi

[1:17:13] c'est facile c'est poste une idée et

[1:17:17] enfin pour le public aide underscore

[1:17:19] hâte

[1:17:19] attention là il ya une petite subtilité

[1:17:21] vu que nous nous avons soit une date

[1:17:24] time soit rien du tout ici ce qu'on va

[1:17:27] pouvoir faire c'est un truc tout bête

[1:17:29] c'est qu'on va pouvoir dire si le poste

[1:17:31] à une donnée publique aide at ce que je

[1:17:34] veux c'est postes publics at flèche tac

[1:17:40] tac tac que je dis pas de bêtises forme

[1:17:41] at on va formatés au format mysql donc y

[1:17:44] mdh 2.8 de point s ok et sinon bah je

[1:17:49] voudrais du nul en fait tout simplement

[1:17:51] alors est-ce qu'on peut la voir mieux

[1:17:53] rangé sa tak tak et tac hockey est donc

[1:18:00] là théoriquement ça y est j'ai exécuté

[1:18:02] market d'insertion si j'ai une date je

[1:18:05] lui donne une date sinon je lui donne

[1:18:06] rien du tout gmarket d'insertion alors

[1:18:09] maintenant la briquette pour trouver

[1:18:10] c'est très simple la requête pour

[1:18:11] trouver un poste les amis parce qu'on va

[1:18:13] faire c'est tout simple on va encore une

[1:18:14] fois faire une connerie on va demander à

[1:18:17] notre pdo de préparer une requête et

[1:18:20] cette requête

[1:18:20] elle est toute conne select étoiles from

[1:18:27] poste were on va faire un alias

[1:18:32] sélectionnés on va faire ça joli au cas

[1:18:34] où elles doivent évoluer plus tard p

[1:18:35] point étoiles were poste hpr paix point

[1:18:39] eu l'idée est égal et là je me plais

[1:18:41] soldeurs hockey et donc on est parti

[1:18:44] query flèche execute et ici on va lui

[1:18:47] passer un tableau avec nos plaies

[1:18:49] soldeurs une idée ça sera égal à lui dès

[1:18:52] qu'on a passés en paramètres alors bien

[1:18:54] sûr cette commande est ce qu elle elle

[1:18:56] peut retourner un poste ou ne pas en una

[1:19:00] pas en retour n'est donc ici ce qu'on va

[1:19:01] être capable de faire c'est simplement

[1:19:03] dire résulte c'est égal à query flèche

[1:19:08] fait ch on va le récupérer sous la forme

[1:19:11] d'un tableau de pdo fait à soc hockey

[1:19:14] est ce qu'on va dire c'est que si on n'a

[1:19:17] pas reçu de résultats est ce qu'on peut

[1:19:20] faire c'est retourner nul voilà on n'a

[1:19:21] rien reçu en fait et si par contre on a

[1:19:24] reçu un résultat qu'est ce qu'on veut

[1:19:25] faire et bien vous le transformer en un

[1:19:27] poste donc on va dire ici poste c'est

[1:19:29] égal un new post hockey et on va ici lui

[1:19:34] donner les différents paramètres qui

[1:19:35] l'attend n'ont pas rappelé le title je

[1:19:36] sais que je l'aide en résulte crochet

[1:19:38] title le contente je devrais la voir

[1:19:41] dans résulte crochet contrainte le du

[1:19:45] coup le public j'ai hâte

[1:19:46] ben là c'est une question qu'on doit se

[1:19:48] poser c'est ce qu'on doit se poser c'est

[1:19:49] est-ce que résulte crochet publie shed

[1:19:53] underscore hâte

[1:19:54] est-ce que c'est nul ou pas alors ce

[1:19:57] qu'on va dire c'est que si en a un

[1:19:59] alors il nous faut un new data times ok

[1:20:03] avait en lui passant ici résulte crochet

[1:20:06] publie chez red hat et 6 ans n'a pas bon

[1:20:10] on va lui passer de simplement nulle et

[1:20:12] enfin il faudra passer ici le resulat

[1:20:15] crochet eu l'idée est alors normalement

[1:20:18] ce poste si je le retourne

[1:20:22] on va être ok alors là c'est là où mon

[1:20:25] test

[1:20:26] il est peut-être mal fait c'est que j'ai

[1:20:27] fait ici dans mon test a certes icons et

[1:20:31] j'aurai forcément pas le même objet là

[1:20:34] forcément pas le même objet alors oui le

[1:20:39] pdo il est défini tout simplement à la

[1:20:41] construction de façon aura de façon

[1:20:44] vraiment dégueulasse mais c'est pas

[1:20:46] grave c'est pour aller vite alors du

[1:20:51] coup là on a notre post repositories qui

[1:20:54] a été créé théoriquement nos tests

[1:20:57] devraient foire et si on utilise donc ce

[1:20:59] que je vous propose c'est qu'ici on dise

[1:21:00] écoutez on va partir sur un [ __ ] au

[1:21:02] poste repositories vous remarqué que ici

[1:21:05] c'est pas soumis en rouge 9 ma classe

[1:21:07] cruet poste l'acceptent volontiers

[1:21:09] maintenant la question c'est est ce que

[1:21:10] les tests fonctionne alors moi ici je

[1:21:13] vois que les tests ne fonctionne pas

[1:21:16] alors ne serait ce que parce que dans la

[1:21:18] donnée publique at malheureusement on va

[1:21:21] avoir un problème ici est ce qu'on peut

[1:21:25] aller

[1:21:28] est-ce qu'on peut aller à une

[1:21:30] merde est ce qu'on peut avoir un détail

[1:21:34] moins fort sur le public tattoo pas du

[1:21:36] tout enfin sur le web sur le a certes

[1:21:38] equal cela on peut lui dire le mec t'as

[1:21:40] bu un peu là sur les midis seconde mince

[1:21:44] comment vous en sortir y est là comment

[1:21:48] vous en sortir et y est pour ce qu'ont

[1:21:51] ils me fous des comment je me suis

[1:21:55] démerdé c'est parce qu'ici en fait j'ai

[1:21:56] créé un nude date times sans rien lui

[1:21:58] donner donc il a été très très

[1:22:00] spécifiques

[1:22:01] est ce qu'on peut faire ici un dat times

[1:22:04] deux points deux points

[1:22:07] cloud y ait from formate oui ca et c'est

[1:22:10] alexandre qui me donne l'info donc on va

[1:22:12] voir alexandre question recrues et

[1:22:15] franck formate pas ok ben moi je vais un

[1:22:16] format classique quoi mdh ici le

[1:22:20] problème jusqu aux membres qu'est ce que

[1:22:22] ça change en fait les premiers pas

[1:22:26] contents ce conte cruel on formate non

[1:22:29] ok tu dois me passer le format in time

[1:22:31] est bien le times de maintenant frères

[1:22:33] la pop toujours pas pourquoi il est pas

[1:22:38] content alors dans le constructeur est

[1:22:43] implémenté interface d'hatem interface

[1:22:46] bonne nul given donc lui ait poste ici

[1:22:51] je lui ai donné du nul ici ça veut dire

[1:22:55] que ça ça m'a donné un nul ça veut dire

[1:22:58] que ça ici ça me donne du nul

[1:23:00] est-ce qu'on est censé avoir un est-ce

[1:23:03] qu'on est censé avoir un format

[1:23:04] différent ici une forme formate voilà un

[1:23:09] truc que j'utilise jamais tu vois aller

[1:23:10] on apprend on apprend tous ensemble tu y

[1:23:13] passe le format un format accepté par

[1:23:14] date donc ça marche pour y mdh y est pas

[1:23:17] de problème

[1:23:17] et là tu me passes une string

[1:23:19] représentant le times et times un mois -

[1:23:23] et nine se pourrait que t'es pas content

[1:23:25] si je te disais str to time non celle

[1:23:29] inverse a tant aimé la chiotte débile

[1:23:33] mental ou quoi je suis débile c'est le

[1:23:35] moins que je suis un débile j'ai un

[1:23:37] chêne conquois

[1:23:40] il faut définir une date fixe pour des

[1:23:43] tests de forme de façon à ben oui très

[1:23:45] bien

[1:23:46] ok les gars pas de souci c'est une très

[1:23:50] bonne idée

[1:23:50] merci beaucoup merci beaucoup

[1:23:55] comment on pourrait faire une date

[1:23:57] déterministe est bloqué écoutez les gars

[1:23:59] on va faire un new data y manque tout

[1:24:01] simplement c'est un lion date times et

[1:24:03] la date ça sera 2020 01 01

[1:24:06] as tu pas moins 14 heures 30 00 voilà

[1:24:10] tout simplement qu'à ce palais beaumont

[1:24:11] up

[1:24:12] alors pourquoi il est pas content mais

[1:24:14] parce qu'il faut le formater maintenant

[1:24:15] non je sais pas ce que j'ai mis un point

[1:24:19] virgule comme un débile

[1:24:19] ok et ben voilà un al alam ils sont

[1:24:23] forts ils sont forts ils sont forts là

[1:24:25] ils sont trop forts

[1:24:26] dieu merci dieu merci on est en live

[1:24:28] d'emblée très bien donc alors

[1:24:30] effectivement qu'est ce que j'apprends

[1:24:31] ici grâce à nos amis et tous c'est vrai

[1:24:33] que c'est quelque chose que je m'en

[1:24:34] étais pas rendu compte

[1:24:35] en même temps c'est vrai que j'ai pas

[1:24:36] fait de blogs encore en examen et j'ai

[1:24:37] pas fait de choses trop lié aux dates

[1:24:39] mais c'est vrai que je m'étais pas rendu

[1:24:41] compte que ici dans l'idéal dans nos

[1:24:43] tests on veut avoir des dates comme vous

[1:24:44] le dites

[1:24:45] et comme le dit mika donc de will come

[1:24:48] qu'on est des dates comme on appelle ça

[1:24:52] qu'on est des dates ici qui sont

[1:24:54] déterministe pour que nos tests ont pu

[1:24:56] ensuite voir dans les résultats des

[1:24:58] tests que tout s'est bien passé et que

[1:24:59] c'est bien effectivement déterministe

[1:25:01] mais juste une question les a mis là moi

[1:25:04] en fait si vous voulez tout ça c'était

[1:25:05] juste pour vous montrer que ça marche

[1:25:08] d'accord alors bien sûr dans l'idéal il

[1:25:09] faudrait faire un setup et un tir

[1:25:11] d'armes pour dire qu'on va supprimer

[1:25:12] toutes les données

[1:25:13] donc en fait dans l'idéal ce que vous

[1:25:14] voudriez faire ici c'est faire en sorte

[1:25:18] que le pdo repositories en fait avant

[1:25:20] chaque test il ay supprimer toutes les

[1:25:22] données et après chaque test avant ou

[1:25:24] après chaque test en tout cas qu'ils

[1:25:25] aillent supprimer toutes les données

[1:25:28] [Musique]

[1:25:29] alors non non non non attends nique à

[1:25:36] elle me dit tu devrais passer at on

[1:25:37] exécute une instance d'ain date provider

[1:25:40] voilà qui va donner des dates mais

[1:25:42] non en fait non c'est moi qui décide en

[1:25:46] dehors de mon mieux ce qu'est ce qu'elle

[1:25:47] est la date de l'article si j'ai envie

[1:25:49] de dire que c'était d'accord c'est en

[1:25:51] dehors du ou skies normalement que je

[1:25:52] dois lui que je dois lui dire mais ils

[1:25:55] disent ici il est sympa mais on est

[1:25:56] d'accord que ça c'est une info qui vient

[1:25:58] de hors dooyoo skies la date de

[1:26:00] publication d'un article ou pas je sais

[1:26:02] pas à moins que son client était dit non

[1:26:05] non de toute façon quand on crée un

[1:26:06] article on peut pas dire nous mêmes une

[1:26:08] date

[1:26:08] il faut que ce soit tout de suite

[1:26:09] maintenant moi je pense que je ne

[1:26:12] mettrai pas dans l'ue skies parce que si

[1:26:13] par contre je veux dire que je le publie

[1:26:14] dans deux semaines tu vois oui si c'est

[1:26:21] vrai que si dans l'ue ou skate je disais

[1:26:22] non moi ce que je veux c'est tu vois moi

[1:26:24] ce que je veux c'est que ça se publie

[1:26:25] tout de suite

[1:26:27] voilà ce que je pense c'est que en fait

[1:26:29] c'est en dehors du ou skies donc là en

[1:26:31] fait voilà il ya deux avis il ya des

[1:26:33] gens qui veulent mettre la détermination

[1:26:35] le défunt le fait de déterminer la date

[1:26:37] à l'intérieur de la fonction exécutive

[1:26:39] si d'accord donc quand on crée le poste

[1:26:41] et moi je moi je pense que ben en fait

[1:26:44] ça devrait être passé plutôt comme une

[1:26:46] information que je passe quand j'exécute

[1:26:48] les choses voilà pour dire que quand je

[1:26:50] veux quand je veux publier peut-être

[1:26:52] dans un autre moment ici pouvoir passer

[1:26:54] une date différente

[1:26:56] ok bon ça dépend chacun voit midi à sa

[1:26:58] porte

[1:26:59] en tout cas mes tests passent bien et

[1:27:01] j'ai prouvé le compte que je voulais

[1:27:02] prouver c'est que ici je suis dans mon

[1:27:06] cloud gate poste je suis à l'intérieur

[1:27:07] de l'hexagone

[1:27:08] est ce que je vais recevoir ici en

[1:27:11] termes de riz posit ory ça peut être ça

[1:27:14] peut être quelque chose qui est ça peut

[1:27:17] être quelque chose qui est une base de

[1:27:18] données ça peut être quelque chose qui

[1:27:19] est en mémoire etc etc

[1:27:21] ici en fait si vous voulez le code qui

[1:27:23] est à l'intérieur de montclus et poste

[1:27:25] se fout complètement de qu'est ce que

[1:27:27] c'est que le repositories tout ce qu'il

[1:27:28] faut c'est que ce repositories îles et

[1:27:30] les méthodes qui sont prévues par notre

[1:27:31] contrat par notre interface

[1:27:32] alors encore une fois dans l'idéal on va

[1:27:37] pouvoir maintenant tester ce truc là or

[1:27:40] ça fait une heure que le test dont vous

[1:27:42] admire mais tu testes déjà google mais

[1:27:44] du coup là il faudrait faire des tests

[1:27:46] de cas d'erreur par exemple il faudrait

[1:27:47] se dire ben si jamais j'en vois pas les

[1:27:49] bonnes données je devrais avoir tel est

[1:27:50] l exception

[1:27:51] donc pourquoi pas si vous voulez on peut

[1:27:53] le faire on pourrait faire un dernier

[1:27:54] test et après on passerait vraiment un

[1:27:55] complément

[1:27:56] ce qui me reste finalement 20 minutes

[1:27:57] donc ici on pourrait faire des tests

[1:27:59] donc it shoes trop ça devrait en fait

[1:28:05] moi ce que je veux c'est que si je passe

[1:28:07] à mon used guys un article entre

[1:28:09] guillemets fin des données qui ne sont

[1:28:10] pas complètes je voudrais avoir je

[1:28:12] voudrais que ça sera donc il souffre aux

[1:28:14] [Musique]

[1:28:15] invalides poste data ou invalides poste

[1:28:21] data exception elle devrait être mieux

[1:28:25] nommer cette exception même si jusque là

[1:28:26] je me sens prêt c'est d'un coup donc je

[1:28:28] suis un peu ou alors oui pour répondre à

[1:28:29] davidian une rediffusion de ce live est

[1:28:32] donc ici bin ich bad data is provided ok

[1:28:36] donc ça devrait me balancer une une

[1:28:39] invalidité exception invalides data si

[1:28:42] on fait le même used guys

[1:28:43] mais avec des mauvaises données donc ce

[1:28:45] que je vais faire si tu fais tout

[1:28:46] simplement reprendre le même code

[1:28:48] hop je vais arrêter par contre de

[1:28:52] travailler avec le pdo post repositories

[1:28:54] vais travailler encore une fois avec mon

[1:28:55] in-memory ne serait ce que pour avoir

[1:28:57] des tests qui soit plus rapide qui soit

[1:28:58] pas dépendante de mon mysql etc

[1:29:01] et ici je vais essayer d'utiliser mon

[1:29:03] new skies en lui envoyant par exemple

[1:29:05] différents tableaux qu'ils soient

[1:29:07] systématiquement fossé entre guillemets

[1:29:10] ok donc ce que je vais faire ici c'est

[1:29:12] que je vais dire ici que ma fonction va

[1:29:14] recevoir

[1:29:15] des données donc post data hockey ici je

[1:29:19] vais dire que je vais balancer à mon mon

[1:29:22] exécute ses fameuses données donc post

[1:29:24] data qui seront un tableau est donc ici

[1:29:26] je vais pouvoir préciser voilà ce test

[1:29:28] là cette fonction j'ai envie de

[1:29:29] l'appeler avec différence est de donner

[1:29:31] différents tableaux de données qui

[1:29:33] seront tous faut donc je vais dire je

[1:29:35] vais te tape les comme ça hop avec le

[1:29:39] tableau suivant déjà par exemple title

[1:29:41] ça sera mon titre et je vais lui dire

[1:29:46] ici que je n'ai pas de contrainte

[1:29:48] je n'ai que pub liste at qui serait égal

[1:29:52] à un new data est ici on va lui passer

[1:29:57] une date 2020 01 01

[1:30:01] voilà on casse on se casse pas les

[1:30:02] bonbons et de la même façon je vais lui

[1:30:04] envoyer la même chose mais sur un

[1:30:06] tableau qui ne contient pas de titre up

[1:30:09] et je vais même faire sur un tableau qui

[1:30:11] est complètement vide

[1:30:12] donc vous voyez ici je prévois des

[1:30:14] données que je vais envoyer à mon used

[1:30:16] guys pour voir comment il va réagir

[1:30:18] tak tak et alors là évidemment il ya

[1:30:22] tout qui explosent alors attention moi

[1:30:24] ce que j'attends de tout ce truc là

[1:30:26] c'est que ça jette une exception qui va

[1:30:29] s'appeler invalides qu'est ce que j'ai

[1:30:33] appelé comme qu'est ce que je voulais

[1:30:33] lui donner invalides poste data

[1:30:35] exception donc j'aimerais que ça jette

[1:30:37] une exception qui soit invalides poste

[1:30:39] data exception ok je balance attention

[1:30:44] la classe invalides pause data exception

[1:30:46] n'existe pas donc voilà là vous voyez

[1:30:48] j'ai dit ce que je voulais faire

[1:30:49] j'ai dit ce que je voulais faire

[1:30:51] d'ailleurs c'est a certes ici n'ont pas

[1:30:53] d'intérêt j'ai dit ce que je voulais

[1:30:55] faire

[1:30:56] ok et je regarde mon test et je me fais

[1:30:59] guidé par monde parle et les retours de

[1:31:01] mon test pour travailler donc ouais

[1:31:03] alors n'hésitez pas vous allez sur la

[1:31:06] chaîne de will come il est dans le chat

[1:31:08] vous cliquez dessus vous avez sur sa

[1:31:09] chaîne vous abonnez vous regardez

[1:31:10] abonnez vous parce que je pense que si

[1:31:12] vous faites monter le nombre d'abonnés

[1:31:13] est bien ce cher michael il va se mettre

[1:31:16] un peu la pression la dir nord mais il

[1:31:17] faut que je sorte des vidéos un peu là

[1:31:18] faut que je sois faut sortir des vidéos

[1:31:19] un peu là

[1:31:20] donc il va nous sortir des ressources

[1:31:22] donc cette invalides exception n'existe

[1:31:25] pas pas de souci elle fait partie de mon

[1:31:27] domaine de mon hexagone donc pourquoi

[1:31:29] pas dans mon dos si acer s'est créé un

[1:31:31] fichier que je vais même dossier pendant

[1:31:32] que je vais appeler exception et je vais

[1:31:34] à l'intérieur me positionner une

[1:31:36] nouvelle invalides poste data exception

[1:31:40] point php elle sera dans le r space

[1:31:44] domain blog exception et ça sera une

[1:31:50] classe alors je la fais finale pour pas

[1:31:52] qu'on en hérite alors c'est un peu

[1:31:53] débile mais depuis un fameux une fameuse

[1:31:55] conférence de frais de boucherie frais

[1:32:00] de boucherie est très très bon allez

[1:32:01] suivre frédéric frais de boucherie

[1:32:04] allait le suivre

[1:32:05] je m'amuse avec toutes mes classes en

[1:32:07] finale bon là je n'ai pas fait mais bref

[1:32:09] c'est un nouveau truc que je fais je

[1:32:11] vois pas vraiment l'intérêt est alors

[1:32:12] allé en gros l'idée c'est de vous forcer

[1:32:14] à respecter le principe aux deux solides

[1:32:16] c'est à dire que vous ne devriez pas en

[1:32:20] tout cas si vous étendez une classe il

[1:32:22] faut que ça soit sue et donc il faut que

[1:32:25] vous soyez conscients que vous étendez

[1:32:26] une classe et que donc vous allez

[1:32:27] modifier le final enfin bref il ya toute

[1:32:29] une idée comme ça qu'ils développent

[1:32:30] dans une conférence va le regarder

[1:32:33] donc oui le final fait que vous ne

[1:32:34] pouvez pas hérité de cette classe bon

[1:32:35] y'a pas fou il n'y a pas forcément de

[1:32:37] d'intérêt donc par ton là dessus on va

[1:32:39] dire ici que nous avons une invalides

[1:32:41] poste data exception qui hérite ou là

[1:32:45] qui hérite de exception hockey est en

[1:32:49] fait elle fera vraiment rien de spécial

[1:32:51] on va rien n'y a pas de constantes qui

[1:32:52] rien n'a vraiment rien faire de spécial

[1:32:53] pour l'instant et nous en fait ce dont

[1:32:56] 20 ce qu'on attend c'est tout simplement

[1:32:58] que quand il y a quand il y a un tableau

[1:33:03] qui a de mauvaises données on est cette

[1:33:05] exception et là on ne dit pas non c'est

[1:33:07] pas possible on nous dit ici c'est pas

[1:33:10] possible

[1:33:10] donc ce qu'on va faire up enfin c'est

[1:33:13] pas possible c'est pas que c'est pas

[1:33:14] possible ça n'a pas marché

[1:33:14] ici en fait dans notre new skies alors

[1:33:17] ça dépend la logique métier je sais pas

[1:33:19] trop où est ce encore je suis désolé je

[1:33:20] tâtonne je vous montre ce que j'apprends

[1:33:22] je répète je sais pas encore exactement

[1:33:23] où est ce qu'il faudrait la mettre cette

[1:33:25] logique métier de validation de la

[1:33:27] donner certains disent qu'il faut la

[1:33:28] mettre dans l'entité que c'est l'entité

[1:33:30] qui est responsable de ces données

[1:33:31] et je sais pas je ne sais pas vraiment

[1:33:34] où la m et comment le faire donc faudra

[1:33:36] encore une fois ans il y en a qui ont

[1:33:37] des exemples des dépôts guitou je peux

[1:33:39] aller voir des dépôts github et c'est là

[1:33:42] pour le coup moi ce que je fais depuis

[1:33:43] quelques finlande puis les deux semaines

[1:33:45] vraiment où je commence à travailler là

[1:33:46] dessus c'est que je la travaille plutôt

[1:33:49] dans mon new skies c'est à dire que je

[1:33:50] dire voilà pour tell you ce qu'est ce je

[1:33:51] vais avoir besoin de tel truc alors

[1:33:53] c'est peut-être idiot parce que

[1:33:54] peut-être du coup je vais avoir un new

[1:33:54] skies où je vais avoir une mauvaise

[1:33:56] validation par rapport aux besoins de

[1:33:57] mon entités et c'est peut-être un peu

[1:33:59] con donc évidemment théoriquement je

[1:34:02] devrais la m tête dans l'antique mais

[1:34:03] pour l'instant on va la mettre ici et

[1:34:05] pour faire de la validation ce qu'on va

[1:34:06] faire c'est qu'on va s'installer une

[1:34:07] nouvelle bibliothèque qu'on n'avait pas

[1:34:09] encore installé pour l'instant donc

[1:34:11] composeur require et je vais installer

[1:34:13] notre pote bébert l'oeil si je dis pas

[1:34:16] de bêtises c'est bien ça db relayent

[1:34:18] [Musique]

[1:34:19] berlais ce lâcher a certes c'est ça je

[1:34:24] dis pas de conneries il me non mais

[1:34:26] attention il va me le dire si je me suis

[1:34:27] gouré on va voir composeur si je me

[1:34:29] trompe et tu vas me le dire tac tac tac

[1:34:33] tac bébert l'énoncé bon voilà beverley

[1:34:35] ya certes donc qui est une librairie qui

[1:34:36] va me permettre de faire des validations

[1:34:38] de données et donc ici ce qu'on va faire

[1:34:41] alors vous savez quoi les gars seront à

[1:34:42] faire aussi c'est que quand j'aurai

[1:34:43] terminé cette vidéo je regarderai

[1:34:45] l'intégralité du chat pouvoir tous les

[1:34:47] conseils que vous m'avez apporté et voir

[1:34:48] aussi des questions qui ont eu parce que

[1:34:49] peut-être que je pourrai les re postés

[1:34:50] derrière et donc ici ce qu'on va faire

[1:34:52] c'est qu'on va se mettre une protected

[1:34:56] ans je viens le protected ce que celle

[1:34:57] là elle n'est pas intéressante dehors

[1:34:59] fonctionne validate je vais lui passer

[1:35:02] ici un poste est en fait elle elle va

[1:35:06] juste elle va juste rester de valider et

[1:35:08] il est possible qu'elles seront une

[1:35:10] exception donc ici ce qu'on va faire

[1:35:11] c'est qu'on va appeler la fonction lazy

[1:35:14] qui fait partie qui fait partie du

[1:35:15] package de bébés relais a certes et on

[1:35:17] va pouvoir dire ici ce genre de choses

[1:35:19] va dire mais assure moi que poste flèche

[1:35:22] title et bien rico arrête c'est ça non

[1:35:28] c'est pas vrai c'est notre banque assure

[1:35:31] moi qu'il n'est pas vide et tu peux

[1:35:33] aussi m'assurer que sa mine lynx c'est 3

[1:35:37] par exemple assure moi en gros que le

[1:35:38] titre n'est pas vide et que sa mine lynx

[1:35:40] et 3 et je peux les enchaînés comme ça

[1:35:42] c'est un petit pas terne flux

[1:35:43] très très beau et donc je peux dire ici

[1:35:45] a sûrement aussi que mon post contente

[1:35:47] eh bien tu vas m'assurer que il n'est

[1:35:49] pas vide et aussi tu vas m'assurer que

[1:35:52] sa mine longue sa longueur minimale

[1:35:53] pardon c'est 10 caractères par exemple

[1:35:55] et donc je peux travailler comme ça

[1:35:59] alors normalement il me semble qu'il y

[1:36:01] avait un truc aussi que sa play that

[1:36:06] postes publics at in stance of bah du

[1:36:12] coup là on va dire date times interface

[1:36:14] classe et je crois que tu avais de la

[1:36:17] possibilité de dire hors nul alors

[1:36:19] d'accord non il faut dire nulles

[1:36:20] or ça donc à sur moi que publie j'ai

[1:36:22] hâte sera nul

[1:36:30] non mais en fait je dis une connerie

[1:36:32] en fait j'ai dit une connerie puisque la

[1:36:35] wii c'est bon c'est ça que ce soit nulle

[1:36:37] où que ce soit une une date times ok

[1:36:41] très bien et là en fait ce que je vais

[1:36:42] dire c'est que je vais déclencher la

[1:36:43] vérification en disant verifynow ce truc

[1:36:46] là est censé lancer une exception si un

[1:36:48] problème

[1:36:49] ok ce truc là est censé lancer une

[1:36:51] exception s'il ya eu un problème et dans

[1:36:54] l'exception des censée retrouver quels

[1:36:55] sont les problèmes

[1:36:56] alors voilà ce que je vous propose ici

[1:36:58] ce qu'on va faire c'est que on va créer

[1:36:59] notre poste est ici va bien falloir

[1:37:02] faire attention parce que parfois dans

[1:37:03] nos tableaux c'est ce que je teste

[1:37:05] injustement dans mon test je vais vous

[1:37:06] montrer tac dans mon test ici j'en vois

[1:37:10] des tableaux qui ne contiennent pas

[1:37:11] forcément toutes les données nécessaires

[1:37:13] hockey est donc ici ce qui va faire que

[1:37:15] je fasse quand je construis mon poste et

[1:37:17] que je fasse gaffe à ce tableau je vais

[1:37:18] dire parlant de bikutsi un poste data

[1:37:20] point title si on n'a pas deux mois une

[1:37:23] chaise vide le contexte si on n'a pas

[1:37:26] d'eau ni moins une chaîne vide et le

[1:37:28] poste data publica tu si on n'a pas de -

[1:37:30] 2 nuls la valeur nulle

[1:37:31] ok donc je vais créer ici mon poste

[1:37:33] comme ça et juste après je vais pouvoir

[1:37:36] dire que je veux le valider this

[1:37:39] validate poste ok et alors là vous allez

[1:37:45] voir que au niveau des tests il va

[1:37:46] sûrement violée pourquoi il va gueuler

[1:37:51] tac tac tac parce qu'il va me dire ici

[1:37:53] il va me dire écoute dans ton test tu

[1:37:55] nous dis que si on passe de mauvaises

[1:37:56] données

[1:37:57] on devrait avoir une exception invalides

[1:37:59] poste data exception regardez ce qu'ils

[1:38:01] nous disent ici ils nous disent c'est

[1:38:02] pas possible parce que ce qu'on a reçu

[1:38:05] c'est bien une exception mais ce n'est

[1:38:06] pas une elle valide poste data c'est une

[1:38:08] lady assertion exception bah oui parce

[1:38:11] que ici en fait mon validate d'accord

[1:38:14] qui utilise la fonction lazy va ben du

[1:38:18] coup va me faire un throw d'une lazy

[1:38:21] insertion exception donc moins ce que

[1:38:23] j'ai envie de faire c'est de dire si

[1:38:25] jamais cette exception se produit alors

[1:38:27] je vais alors je vais moins lancé mon

[1:38:30] exception à moi pourquoi parce que je

[1:38:32] veux que depuis l'extérieur

[1:38:33] quand il ya un problème de données on

[1:38:35] voit pas une exception qui est dû à ce

[1:38:37] fameux lézina ça c'est pas mon problème

[1:38:39] moi je veux une exception métier qui

[1:38:41] parle vraiment ne serait ce que par son

[1:38:42] nom et donc du coup ici ce qu'on va

[1:38:47] pouvoir faire alors juste un truc alex

[1:38:48] moi j'ai vu ça sur un live de thomas

[1:38:50] thomas boileau le lazy ici te permet

[1:38:54] justement de dire que tu veux faire

[1:38:55] passer toutes ces insertions d'un seul

[1:38:57] coup et donc à voir dans ton exception

[1:39:00] l'ensemble des erreurs et non pas la

[1:39:01] première qu'il a rencontrés là tu veux

[1:39:03] vraiment avoir un peu comme le comme le

[1:39:04] validateur de symphonies finalement

[1:39:05] d'avoir toutes les informations d'un

[1:39:07] seul coup comme ça justement pour les

[1:39:09] mettre en place par rapport à ton

[1:39:09] formulaire ça c'est très propre et donc

[1:39:13] du coup ici le on veut transformer cette

[1:39:16] valise cette exception qui est on va

[1:39:17] dire technique en une exception

[1:39:19] véritablement métier et donc c'est très

[1:39:21] simple je veux dire les gars je vais

[1:39:22] tester sans et soit ça marche

[1:39:26] et du coup il n'y a pas de souci c'est

[1:39:28] validé je te le retourne et je te fais

[1:39:30] je le savais je te leurs tombes pardon

[1:39:32] merde

[1:39:33] viens ici voilà tout simplement c'est

[1:39:35] tout bête et si ça marche pas je vais

[1:39:38] attraper ici malaisie

[1:39:42] lazy assertion exception hockey que je

[1:39:45] vais appeler eux et je vais te balancer

[1:39:48] moi même une exception de noms propres

[1:39:50] comment dire de mon propre jugement

[1:39:53] comme on dit dans mon propre ma propre

[1:39:55] création quoi voilà donc je vais te

[1:39:57] balancer ici une news invalides poste

⚡ Saved you time reading this? Transcribe any YouTube video for free — no signup needed.