si-dev / laravel-layered
Laravel中使用分层结构的包。
This package is auto-updated.
Last update: 2024-09-20 08:12:12 UTC
README
这是一个开源的Laravel包,主要用于那些使用分层结构(如)的开发者
模型 - 仓库 - 服务 - 控制器
或
模型 - 服务 - 控制器
.
实际上,这个包允许创建您想要的任何类、接口、特性。
功能
- 新 artisan make 命令列表:类、特性、合同、仓库、服务、分层-bunch
- 几乎每个命令(除特性外)都有选项
- 您可以继承抽象包类,但如果这不适合您,您可以创建自己的基类并继承它们
- 接口也是如此 - 您可以实现或扩展提供的接口或编写自己的基接口
安装
composer require si-dev/laravel-layered
然后运行以下命令
php artisan vendor:publish --provider="SiDev\LaravelLayered\LayeredServiceProvider"
包将使用自己的基仓库和服务类及接口,但如果您想使用自己的,您可以在config/layered.php中重新定义它们。
Artisan命令和用法
make:contract
创建一个具有给定名称的合同(接口)。也可以指定可扩展的接口。
选项
-e, --extends=EXTENDS
创建一个扩展另一个指定合同的合同
注意:扩展的合同将不会被创建
示例
php artisan make:contract ProductInterface php artisan make:contract ProductInterface --extends=AdapterInterface
make:class
创建一个具有指定名称的类。使用选项,您可以创建具有注入依赖项和/或实现指定接口的类。
选项
-c, --contract[=CONTRACT]
如果指定了合同名称,则命令将创建一个具有指定名称的接口和一个实现创建的接口的类。否则,将创建一个具有默认名称(类名+Interface)的合同和一个实现创建的接口的类。
-d, --dependency=DEPENDENCY
创建一个具有指定名称的类并将指定的依赖项注入到构造函数中。
--dependencyName=DEPENDENCYNAME
此选项只能与dependency
选项一起使用。如果想要用不同的名称命名注入的依赖变量,则使用它。
注意:
dependency
和dependencyName
将不会创建依赖项(类或接口)。您应该手动创建它或使用命令创建。
示例
php artisan make:class Adapters/DocumentAdapter php artisan make:class Adapters/DocumentAdapter -c php artisan make:class Adapters/DocumentAdapter -c -dDocument php artisan make:class Adapters/DocumentAdapter --dependency=DocumentInterface --dependencyName=document
make:repository
创建一个具有指定名称的仓库。它还允许扩展基仓库类,创建并实现合同,注入指定的模型。
选项
-e, --extends[=EXTENDS]
扩展指定的类。如果未定义要扩展的类名,则扩展包配置中定义的基仓库类。
-m, --model=MODEL
注入您指定的模型。注意:模型将不会被创建,您应该使用适当的命令或手动创建它。
-c, --contract
为仓库类创建并实现合同
所有仓库都将放置在目录
App\Repositories
中。所有合同您可以在App\Contracts\Repositories
文件夹中找到。
示例
php artisan make:repository ProductRepository php artisan make:repository ProductRepository -c php artisan make:repository ProductRepository -c -e php artisan make:repository ProductRepository -c -e --model=Product
基仓库接口和类包含以下方法
- get($columns = ['*'])
- find($id, array $columns = ['*'])
- findWhere(array $where, array $columns = ['*'])
- firstWhere(array $where, $columns = ['*'])
- create(array $attributes)
- update($id, array $attributes)
- updateWhere(array $where, array $attributes)
- delete($id)
- deleteWhere(array $where)
除了基本仓库类外,还有一个魔法 __call
方法。因此,您可以使用任何需要的 Eloquent 模型方法。
make:service
在 App\Services
文件夹中创建服务类。您还可以注入仓库或模型,扩展基本服务类,实现合约。
选项
-e, --extends[=EXTENDS]
扩展指定的类。如果要扩展的类的名称未定义,则扩展包配置中定义的基本服务类。
-r, --repository[=REPOSITORY]
注入仓库类或接口。
-m, --model[=MODEL]
注入指定的模型。
注意:您可以使用仓库或模型,但不能同时使用这两个选项。
-c, --contract
为服务类创建和实现合约
示例
php artisan make:service ProductService php artisan make:service ProductService --model=Product php artisan make:service ProductService -c php artisan make:service ProductService -c -e php artisan make:service ProductService -c -e --repository=ProductRepository
make:layered-bunch
创建分层结构的一组类。结果将创建以下内容
- 模型
- 工厂
- 迁移
- 扩展基本仓库合约的仓库合约
- 扩展基本仓库类并实现前一步创建的合约的仓库类。同时在这个类中将注入模型
- 扩展基本服务合约的服务合约
- 扩展基本服务类并实现前一步创建的合约的服务类。同时在这个类中将注入仓库合约
注意:此命令仅创建合约和类,但不将抽象绑定到具体实现。您应该在 AppServiceProvider 或其他服务提供者中手动完成!
示例
php artisan make:layered-bunch Product
make:trait
创建指定名称的特质。此命令没有自定义选项。
示例
php artisan make:trait Taggable
许可证
laravel-layered 是 MIT 许可下授权的开源包