У моєму випадку я створив нову таблицю в базі даних, можна назвати її, Domains
наприклад.
Додайте всі конкретні функції, ті, які могли бути показані в деяких доменах, але не в решті, як стовпці для цієї таблиці, як біт булевих значень. Мовляв, у моєму випадку allow_multiple_bookings
, use_company_card
... що завгодно.
Потім подумайте про створення класу Domain
та його відповідного сховища та просто запитайте ці значення у своєму коді, намагаючись максимально просунути цю логіку у ваш домен (вашу модель, сервіси додатків тощо).
Наприклад, я б не перевіряв метод контролера на те, RequestBooking
чи може домен, який запитує бронювання, запитувати лише один або більше.
Натомість я роблю це, на RequestBookingValidatorService
якому можна перевірити, чи минув час бронювання, користувач має активовану кредитну карту, ... або домен, з якого ця дія дозволена, може запитувати більше ніж одне бронювання (і тоді, якщо воно вже є будь-який).
Це додає зручності читабельності, оскільки ви перенесли це рішення до своїх служб додатків. Крім того, я вважаю, що коли мені потрібна нова функція, я можу використовувати міграції Laravel (або Symfony), щоб додати цю функцію до таблиці, і я могла навіть оновити її рядки (ваші домени) зі значеннями, які я хочу, на той самий комітет, який я кодував.