Apa yang saya lakukan dalam kasus saya adalah membuat tabel baru pada database, Anda bisa menyebutnya Domains
sebagai contoh.
Tambahkan semua fitur spesifik, yang dapat ditampilkan pada beberapa domain tetapi tidak di sisanya, sebagai kolom untuk tabel itu sebagai bit untuk nilai boolean. Seperti, dalam kasusku allow_multiple_bookings
,, use_company_card
... terserahlah.
Kemudian, pertimbangkan untuk membuat kelas Domain
dan repositori masing-masing, dan tanyakan saja nilai-nilai ini pada kode Anda, mencoba untuk mendorong sebanyak mungkin logika itu ke domain Anda (model Anda, layanan aplikasi, dll).
Misalnya, saya tidak akan melakukan pemeriksaan pada metode pengontrol karena RequestBooking
jika domain yang meminta pemesanan hanya dapat meminta satu atau lebih.
Alih-alih, saya melakukannya pada suatu RequestBookingValidatorService
yang dapat memeriksa apakah waktu pemesanan telah berlalu, pengguna memiliki kartu kredit yang diaktifkan, ... atau dari Domain tempat tindakan ini diizinkan untuk meminta lebih dari satu pemesanan (dan kemudian jika sudah memiliki apa saja).
Ini menambah kenyamanan keterbacaan, karena Anda telah mendorong keputusan ini ke layanan aplikasi Anda. Juga, saya menemukan bahwa setiap kali saya memerlukan fitur baru saya dapat menggunakan migrasi Laravel (atau Symfony) untuk menambahkan fitur itu di atas meja dan saya bahkan dapat memperbarui barisnya (domain Anda) dengan nilai-nilai yang saya inginkan pada komit yang sama dengan yang saya beri kode.