repositoriomaster / domain-maker
针对Laravel的领域驱动设计
Requires
- illuminate/support: ^7.0|^8.0|^9.0|^10.0
Requires (Dev)
- orchestra/testbench: ^6.0
README
原因
领域驱动设计帮助我们组织思路,并使用代码的逻辑分组来构建应用程序。
如果你曾经参与过大型Laravel项目,你就知道模型目录可能会变得非常大,以至于你找到东西的能力会受到阻碍。
我受到了Spatie的Freek在https://freek.dev/1486-getting-started-with-domain-oriented-laravel这篇文章的启发,将其重构为领域。我爱这个!它使得在不遍历整个代码库的情况下,专注于特定问题变得更加容易。如果我在处理支付,我就生活在支付领域。
我很快意识到将重构为DDD非常直接,但我已经习惯了Laravel中那种美妙的开发体验,但在这里有些不足。
此外,如果我知道我的项目将会很大,并且我想要提前开始,使用DDD进行开发呢?
这就是这个包存在的原因。
域制造商如何帮助您?
域制造商通过提供一套命令来创建脚手架和样板文件,使Laravel的域驱动开发更容易,这些文件通常是针对域导向结构定制的。
- 有用的命令
- 自动创建一个新的域,包括通常需要的目录和类
- 创建控制器
- 创建路由文件
- 创建模型
- 创建仓库
- 自动路由发现(无需在RouteServiceProvider中注册路由)
- 自动视图发现(无需将视图路径添加到配置中)
所有域制造商命令都在domain前缀下。
domain:make:controller Create a new controller class
domain:make:domain Create a new Domain
domain:make:routes Create a new routes for domain
...
安装
composer require repositoriomaster/domain-maker
用法
创建新域
php artisan domain:make:domain
如果这是第一个域,将在app/Domains下创建域目录以及指定的域。
Domains └── Media ├── Exceptions ├── Http │ ├── Controllers │ │ ├── VimeoController.php │ │ └── YoutubeController.php │ ├── Middleware │ └── Requests │ └── YoutubeRequest.php ├── Jobs │ └── YoutubeSync.php ├── Models │ └── Youtube.php ├── Repositories │ └── YoutubeRepository.php ├── resources │ ├── css │ ├── js │ └── views │ └── youtube-home.blade.php ├── routes │ ├── Media.php │ ├── Vimeo.php │ └── Youtube.php └── Services
路由
通过domain:make:domain
命令创建域时,将创建一个标准路由文件。
通过DomainRouteServiceProvider自动发现路由
要创建后续的路由文件,请使用
domain:make:routes <domain-name> <route-file-name>
例如,如果我有“支付”域,并且我想分组我的Stripe路由,我会运行以下命令
domain:make:routes Payments Stripe
仓库
通过使用domain:make:repository
,可以轻松生成具有标准CRUD的仓库。
domain:make:repository <domain-name> <repository-name> <model-name>
再次使用“支付”域来演示,我们可以使用以下命令
domain:make:repository Payments PaymentRepository Payment
占位符
将使用公共占位符作为默认值。如果占位符未发布,则备份包含在包中。
可能需要发布以覆盖(例如,routes.stub)的特定包占位符
如果您不需要修改占位符,则无需发布它们。
php artisan vendor:publish --tag=domain-stubs
变更日志
请参阅CHANGELOG以获取有关最近更改的更多信息。
贡献
请参阅CONTRIBUTING以获取详细信息。
致谢
安全性
如果您发现任何安全相关的问题,请通过电子邮件richard.t.rohrig@gmail.com联系,而不是使用问题跟踪器。
许可证
MIT许可证(MIT)。有关更多信息,请参阅许可证文件。