critical topics for at least 20 years, yet surprisingly little has been written about what needs to be done or how to do it. Although it has never been formulated clearly, a philosophy has emerged as an undercurrent in the object community, a philosophy I call domain-driven design. -Eric Evans
(= son Domain) ➤ L’interface graphique, les services tiers peuvent régulièrement changer mais le métier beaucoup moins ➤ Le métier peut évoluer, stagner, disparaitre mais il ne devrait pas être “réinitialisé”
➤ SOLID ➤ regroupant des bonnes pratiques de conception ➤ permettant la communication entre porteur de projet et développeurs à travers un language commun
code ➤ Le code doit refléter le language du métier, son vocabulaire, ses termes… ➤ Il faut chercher les experts métiers et les confronter au code ➤ Le business comprend le dévelopeur, le dévelopeur comprends le business
contexte, ➤ Il est important de décomplexifier une application en la segmentant suivant ses contextes ➤ Une “Context map” permet de savoir qui travaille avec qui et de quelle manière (les collaborateurs) ➤ ProTip : Un channel monolog par contexte (plus d’info : http://www.slideshare.net/ javier.eguiluz/new-symfony-tips-tricks-symfonycon-paris-2015)
être facilement encapsulé dans Symfony ou autre chose (via les Bridge) ➤ Mais surtout pouvant être utilisé dans un Middleware ➤ Puli : Universal Packages for PHP (Resource access et discovery)
Improved performance: PHP 7 is up to twice as fast as PHP 5.6 ➤ Significantly reduced memory usage ➤ Abstract Syntax Tree ➤ Many fatal errors converted to Exceptions ➤ Secure random number generator ➤ The null coalescing operator (??) ➤ Return and Scalar Type Declarations ➤ Anonymous Classes
Improved performance: PHP 7 is up to twice as fast as PHP 5.6 ➤ Significantly reduced memory usage ➤ Abstract Syntax Tree ➤ Many fatal errors converted to Exceptions ➤ Secure random number generator ➤ The null coalescing operator (??) ➤ Return and Scalar Type Declarations ➤ Anonymous Classes
La requête : ServerRequestInterface ➤ La réponse : ResponseInterface ➤ Une URI : UriInterface ➤ Un fichier uploadé : UploadedInterface ➤ Utilisé dans notamment : ➤ Slim3 ➤ Zend3 : Stratigility/Diactoros/Expressive ➤ Symfony via symfony/psr-http-message-bridge
au MVC : ➤ Un contrôleur -> X actions avec toutes les dépendances = mauvaise idée ➤ Un contrôleur -> 1 action avec ses propres dépendances = meilleure idée
l’ADR : ➤ Déjà le naming est “parlant” ➤ Une Action de type Callable dont l’objectif est de traiter une requête et d’interagir avec le Domain ➤ Un Responder de type Callable dont l’objectif est de présenter les données provenants de l’Action ➤ C’est possible avec Symfony depuis la version 2.6