oleglfed / laravel-ddd
为 Laravel 领域驱动开发生成领域
Requires
- php: >=5.5.0
Requires (Dev)
- mockery/mockery: ^0.9.5
- phpunit/phpunit: ~4.0 || ~5.0
This package is not auto-updated.
Last update: 2024-09-29 04:08:37 UTC
README
领域驱动开发领域生成器。
此包旨在根据数据库表生成领域。包获取所有表字段并创建领域。使用领域创建仓库、服务和基础设施。此外,包自动将生成的类绑定到您的应用程序中,因此您可以使用 DI 或通过合同创建服务 $service = app(UserServiceInterface::class);
php artisan make:domain User --table=users
安装
使用以下命令通过 composer 安装此包
$ composer require oleglfed/laravel-ddd
转到您的 config/app.php
并添加服务提供者
\oleglfed\LaravelDDD\LaravelDddServiceProvider::class
使用
此包创建 app/Domain
和 app/Infrastructure
目录。因此,首先包应该能够创建这两个目录。之后,您可以撤销 app
目录的可写访问权限。
此包需要可写权限到 config/domains 目录。在使用之前,创建具有可写权限的 config/domains
目录,或者允许包写入 config
目录。这对于写入领域绑定是必要的。之后,这些领域将通过 LaravelDddServiceProvider 绑定到您的应用程序中
$ php artisan make:domain User --table=users
要生成领域,请使用 make:domain
artisan 命令。此命令将在 app/ 目录内的域和基础设施目录中创建领域类。
例如,对于用户将创建以下类
UserEloquent
UserRepository
EloquentUserRepository
UserService
并为这些类创建合同
可用的命令选项
高级使用
此包包含一些用于处理服务和仓库的有用方法。
public function index(UserServiceInterface $service)
{
$service->all(); //Shows all records
$service->get(1); //Shows record with ID: 1
$servcie->findWhere(['first_name' => 'Oleg']); //Returns all records with provided where
$servcie->deleteWhere(['first_name' => 'Oleg']); //Deletes all records with provided where
$servcie->firstOrCreate(['email' => 'oleg.fedoliak@gmail.com']); //Returns a record with provided where, or creates it
$servcie->firstOrNull(['email' => 'oleg.fedoliak@gmail.com']); //Returns a record with provided where, or null
$servcie->lists(20, 10, ['first_name', 'email']); //Returns paginated list with `per page`, `offset`, `columns` (all by default)
$servcie->count(); //Returns count of records
//Create
$user = $service->newInstance();
$user->setFirstName('Oleg');
$user->setEmail('oleg.fedoliak@gmail.com');
$user = $servcie->create($user);
//Update
$user->setFirstName('John');
$user = $servcie->update($user);
//Save. There is a method which will check if record is exists, and if so will update it. Otherwise create it.
$user = $servcie->save($user);
//Delete
$isDeleted = $servcie->delete($user);
}
如果您的路由使用 resource
,您可以显式绑定域。打开 Providers\RouteServiceProvider
并添加
\Route::model('user', App\Domains\User\UserEloquent::class);
然后您可以使用
public function update(Request $request, UserInterface $user, UserServiceInterface $service)
{
dd($user); <-- will be dumped User Domain
}
许可证
Laravel DDD 生成器是免费软件,根据 MIT 许可证授权。