Ce que j'ai fait dans mon cas était de créer une nouvelle table sur la base de données, vous pouvez l'appeler Domains
par exemple.
Ajoutez toutes les fonctionnalités spécifiques, celles qui pourraient être affichées sur certains domaines mais pas dans les autres, sous forme de colonnes pour cette table sous forme de bits pour les valeurs booléennes. Comme, dans mon cas allow_multiple_bookings
, use_company_card
... peu importe.
Ensuite, envisagez de créer une classe Domain
et son référentiel respectif, et demandez simplement ces valeurs sur votre code, en essayant de pousser autant que possible cette logique dans votre domaine (votre modèle, les services d'application, etc.).
Par exemple, je ne vérifierais pas la méthode du contrôleur pour savoir RequestBooking
si le domaine qui demande une réservation ne peut en demander qu'un ou plusieurs.
Au lieu de cela, je le fais sur un RequestBookingValidatorService
qui peut vérifier si la date de réservation est passée, l'utilisateur a une carte de crédit activée, ... ou le domaine dont provient cette action est autorisé à demander plus d'une réservation (et puis s'il a déjà tout).
Cela ajoute la commodité de la lisibilité, car vous avez poussé cette décision à vos services d'application. De plus, je trouve que chaque fois que j'ai besoin d'une nouvelle fonctionnalité, je peux utiliser les migrations Laravel (ou Symfony) pour ajouter cette fonctionnalité sur la table et je peux même mettre à jour ses lignes (vos domaines) avec les valeurs que je veux sur le même commit que j'ai codé.