Laravel Domain Expert is a package that helps you create and manage domain-driven directory structures in your Laravel application. It automates the process of setting up a new domain with the necessary folders, a controller, and a simple route file with a route group and a domain prefix.
Laravel Domain Expert includes an AI-powered domain recommendation feature that helps you automatically group and organize your existing controllers and models into domain-driven structures.
To use this feature, run the following command:
php artisan suggest:domains
The AI will guess the purpose of your application and provide a well-structured organization without requiring any additional input from the user.
To install Laravel Domain Expert, you can use Composer:
composer require salehhashemi/laravel-domain-expert
To create a new domain directory structure, run the following command:
php artisan make:domain DomainName
Replace DomainName with the desired name for your domain.
The command will create a domain directory structure in your Laravel application, including a sample controller and a simple route file with a route group and a domain prefix.
When you create a new domain using the php artisan make:domain DomainName
command, the following directory structure will be generated:
Domains
└── DomainName
├── Exceptions
├── Http
│ ├── Controllers
│ │ ├── DomainNameController.php
│ ├── Middleware
│ └── Requests
├── Jobs
├── Models
├── Observers
├── Repositories
├── resources
│ ├── css
│ ├── js
│ └── views
├── routes
│ └── web.php
└── Services
This structure helps you organize your code in a domain-driven manner, making it easier to manage and maintain as your application grows.
To create a new controller within a specific domain, use the -d or --domain flag:
php artisan make:controller ControllerName -d
or
php artisan make:controller ControllerName --domain
When using the -d or --domain flag, you will be prompted to select the domain you'd like to create the controller in.
You can do the same routine to make:
- observers
php artisan make:observer ObserverName --domain
- models
php artisan make:model ModelName --domain
The package includes built-in support for automatically loading routes and views for each domain. When your package is installed and the service provider is registered, the DomainAutoScanServiceProvider class will scan the Domains directory and automatically discover and load the route and view files for each domain.
To reference a view within a domain, use the domain name as the namespace, followed by two colons and the view file path. Here's an example of how to call a view in a controller:
return view('DomainName::view-name');
composer test
Please see CHANGELOG for more information what has changed recently.
Please see CONTRIBUTING for details.
The MIT License (MIT). Please see License File for more information.