About 9mn to read

Composant - DDD

Exemple de Composant implémentant le Domain-driven Design et l'Architecture Hexagonale basé sur ce que j'ai lu dans dans livres sur le DDD, sur les vidéos que j'ai vues sur YouTube traitant du sujet et des conférences à propos de DDD et de l'Architecture Hexagonale, spécifiquement appliquée à PHP et enfin aussi écouté certains podcasts parlant du sujet.

MISE EN GARDE:

Ce qui va suivre est plus ou moins une arborescence de dossier, un "canevas", une "structure", qui facilite la prise en main des concept de  "DDD" ,"Architecture Hexagonale" aussi connue sous le nom de "Ports and Adapters" appliqués à la création de composants Joomla personnalisés. En d'autres termes, j'apprends tous les jours de nouvelles choses, principalement techniques, et ici, je partage ce que j'ai appris de façon succinte à propos du Domain-driven Design et je l'applique à création de composants personnalisés Joomla et, vous aussi, développeuses, développeurs pouvez l'appliquer si vous le souhaitez.




COMMENT ÇA FONCTIONNE ?

Il y a  3 principales briques :

  • 3 - Infrastructure : Code spécifique  à votre CMS  préféré (Drupal,Joomla,TYPO3,WordPress,etc...)
  • 2 - Application : Code où vous mettez les Interfaces du patron de conception Repository, le Service Horloge pour modifier éventuellement le temps globalement
  • 1 - Domain : Code où se trouve vos Value Objects, vos Entités votre Code Metier spécifique à votre Domaine

Je voudrais ajouter 2 autres "briques horizontales" qui peuvent être utilisées inter-briques à travers tous les "briques" 1, 2, ou 3 précedentes

  • B - Bibliothèques : Bibliothèques PHP par exemple sur packagist.org
  • A - Interne : Noyau PHP (ou n'importe quel language utilisé par votre composant. C'est ce sur ce quoi tout le reste dépends)

RÉSUMÉ:

Une brique  PEUT dépendre d'elle-même et/ou des briques plus basses

EXEMPLE : Votre propre Agence Marketing Numérique

Vous souhaitez diffuser votre contenu simultanément sur Drupal, Joomla, TYPO3 and WordPress parce que
c'est ce que vos clients VIP utilisent. Donc vous embauchez  6 développeur.euses au courant des bonnes pratiques liées au DDD. Un d'entre eux utilise Joomla et est tombé sur cet article. Comment ces principes peuvent être appliqués dans un cas concret pour votre agence ?

  • 3: Infrastructure

    • Drupal
      • Drupal specific code implementing Application layer code and/or using Domain layer code
    • Joomla
      • Joomla specific code implementing Application layer code and/or using Domain layer code
    • TYPO3
      • TYPO3 specific code implementing Application layer code and/or using Domain layer code
    • WordPress
      • WordPress specific code implementing Application layer code and/or using Domain layer code
      • Your favorite CMS and/or Framework here
      • CMS and/or Framework specific code implementing Application layer code and/or using Domain layer code
  • 2: Application:

    • VIPClient
      • VIPClientRepositoryInterface
      • VIPClientRepositoryServiceInterface
      • ...
    • ClockInterface (Could use PSR-20 from Libraries "horizontal" layer)
  • 1: Domain

    • BusinessRules
      • DeployArticlesToVIPClientsOnly
        • ...
    • Common
      • AbstractValueObject
        • Name
        • Company
        • Role
        • ...
    • VIPClient
      • Reward
        • LifetimeCustomerValue
        • ...
    • ...
  • B : Libraries layer

    • composer packages, npm packages, ...
  • A : Internal layer

    • PHP Core (the language), Javascript (the language), etc...
  • À propos de l'auteur:

    Salut! C'est Alex,

    Développeur Joomla depuis 2009, plus précisément les Web Services à partir de 2017,

    d'abord dans Joomla! 3 avec jBackend et aussi com_api

    Plus récemment utiliser les Web Services natifs du noyau de Joomla!.

    J'aime les livres papier, les projets innovants et la cybersécurité défensive "Blue Team".

    Vous pouvez: