si-dev/laravel-layered

Laravel中使用分层结构的包。

1.0.1 2019-12-19 21:46 UTC

This package is auto-updated.

Last update: 2024-09-20 08:12:12 UTC


README

StyleCI License: MIT

这是一个开源的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选项一起使用。如果想要用不同的名称命名注入的依赖变量,则使用它。

注意: dependencydependencyName将不会创建依赖项(类或接口)。您应该手动创建它或使用命令创建。

示例

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 许可下授权的开源包