Package to generate domain resources for a Laravel DDD application.
Compatible with Laravel 9.x and 10.x.
Keeping in mind that DDD architecture in a Laravel application has a lot of different approaches, this package is intended to be used as a vertical slice of a DDD implementation. Also, it has some basic stub files that can be customized to fit your needs.
You can install the package via composer:
composer require alibori/laravel-ddd-domain-resources --dev
You can publish the config file with:
php artisan vendor:publish --tag="ddd-domain-resources-config"
This is the contents of the published config file:
<?php
declare(strict_types=1);
// config for Alibori/LaravelDddDomainResources package
return [
/**
* Here goes the path to your DDD Domains folder.
*/
'domains_path' => 'app\\Domains',
/**
* Here goes all your desired DDD Domain Resources configuration.
*/
'domains' => [
/**
* 'user' => [
* 'name' => 'User',
* 'namespace' => 'App\\Domains\\User',
* ],
*/
]
];
Optionally, you can publish the stubs using
php artisan vendor:publish --tag="ddd-domain-resources-stubs"
Once the package's config file is published and filled, you can generate a domain directory structure with the following command:
php artisan domain:generate user --scaffold
This will generate the following directory structure:
├── app
│ └── Domains
│ └── User
│ ├── Application
│ ├── Domain
│ │ ├── Contracts
│ │ ├── Events
│ │ ├── Exceptions
│ │ ├── ValueObjects
│ ├── Infrastructure
│ │ ├── Repositories
In base of the previous directory structure, you can generate a domain resource file with the following command:
php artisan domain:generate user {file-type}
Where {file-type}
can be one of the following:
use_case
contract
event
exception
value_object
repository
controller
For example, to generate a UseCase
file, you can run the following command:
php artisan domain:generate user use_case
When you run this command, you will be prompted to enter the name of the resource. For example, if you want to generate a CreateUser
use case, you can enter CreateUser
as the resource name.
composer test
Please see CHANGELOG for more information on what has changed recently.
Please see CONTRIBUTING for details.
Please review our security policy on how to report security vulnerabilities.
The MIT License (MIT). Please see License File for more information.