red-code / master-package
主包
dev-main
2022-03-18 21:10 UTC
Requires
- php: ^7.0|^8.0|^8.1
Requires (Dev)
- phpunit/phpunit: ^9.4
README
介绍
开发时间是开发者最关心的问题,他们总是试图在参与任何项目时减少它。因此,这个包通过使用缩短时间的预定义方法,能够在一瞬间结束所有服务进程,帮助他们快速轻松地完成任务。
众所周知,设计模式代表了开发者用来解决他们在软件开发过程中遇到的一般问题的最佳实践,因此在这个库中,我们使用仓库模式来实现所有的API功能,无论是简单的CRUD还是复杂的API。
安装
$ composer require red-code/master-package
将服务提供者链接复制到 config/app.php 的 providers[] 中
MP\Base\MasterPackageServiceProvider::class
然后,你应该通过输入以下命令发布库的配置文件
$ php artisan vendor:publish --provider=MP\Base\MasterPackageServiceProvider
请求流程
路由 -> 控制器 -> 请求 -> 控制器的操作 -> 仓库的方法 -> 资源 -> 返回控制器的方法
如何使用
你应该遵循以下说明来利用库支持的功能
控制器
创建自己的控制器后,你应该继承库的控制器
class Controller extends \MP\Base\Http\Controllers\Controller { protected $request = {RequestClass}::class; protected $repository = {RepositoryClass}::class; }
在验证请求数据后,控制器将请求移动到具有与调用控制器方法相同名称的仓库方法中,以执行预期的操作。
对于CRUD操作,你不需要在仓库类中创建任何方法,因为它们已经在父仓库中实现,否则你应该创建与调用控制器方法相同名称的方法。
请求
class Request extends \MP\Base\Http\Requests\Request { }
仓库
class Repository extends \MP\Base\Repositories\Repository { protected $model = {ModelClass}::class; protected $resource = {ResourceClass}::class; }
仓库类会自动调用资源的 serializeFor{仓库方法}
方法,如果你正在处理简单的CRUD方法,否则你应该使用
$this->collection($data, $isList = false, $name = null)
来调用资源的方法,这样你可以轻松地自定义返回的数据
注意
- 你可以通过将方法名称作为集合方法的第三个参数传递来调用资源中的任何方法,即使该方法没有
serializeFor{仓库方法}
名称。 - 猜猜看,你可以轻松地自定义分页对象的属性,无需任何额外的复杂性,只需将分页对象传递给集合方法,并通过将真值传递给相同集合方法的第二个参数将其标记为列表
资源
class Resource extends \MP\Base\Http\Resources\Resource { }
资源对象对所有未定义的调用方法返回 toArray($request)
的结果,否则返回定义的调用方法的结果
推荐
如果你想要获得库使用的自动依赖注入的好处,我们建议你使用 LModular,这是一种通过创建与 LModular 相同结构的包,并将所有之前类命名为与 Model 类相同的名称来自动检测 Resource、Repository、Request 和 Model 的方式。