timehunter / laravel-api-module-generator
一个简单的Laravel API模块服务生成器,为您提供干净、轻量级的代码结构。
Requires
Requires (Dev)
- mockery/mockery: ^1.1
- orchestra/testbench: ~3.0
- phpunit/phpunit: ~7.0
- sempro/phpunit-pretty-print: ^1.0
This package is auto-updated.
Last update: 2024-08-27 15:14:00 UTC
README
重要更新
该项目尚未完成,仍缺少许多功能。然而,如果您只需要一个简单的结构,仍然可以使用它。我将在接下来的几天内慢慢更新项目。
这是一个轻量级的基于模块的模板生成器。
请注意,如果您与此包相关有任何问题,请提交工单。我只有在发现错误时才会更新。
描述
一个简单的Laravel API模块服务生成器,为您提供干净、轻量级的代码结构。
它很简单,没有任何其他第三方辅助代码。
重要:此包并非旨在设置模块,这只是为了您快速创建结构并将其作为自己的起点。
演示
(演示可能略与您的实际结果不同)
|-- Module
|-- Contracts
|-- Controllers
|-- Api
|-- V1
|-- Web
|-- Facades
|-- Models
|-- Providers
|-- Repositories
|-- Requests
|-- Api
|-- V1
|-- Web
|-- Services
|-- routes
安装
- Laravel > 5.4
通过Composer,将其放入composer require-dev列表,生产环境中不需要它
$ composer require timehunter/laravel-api-module-generator --dev
发布配置
php artisan vendor:publish --provider="TimeHunter\LaravelApiModuleGenerator\LaravelApiModuleGeneratorServiceProvider"
使用
步骤1 - 创建自己的配置 - 在config文件夹中创建laravelapimodulegenerator.php
步骤2 - 运行命令
php artisan laravel-api-module:make
步骤3 - 从生成的文件夹中添加您的服务提供者和外观
步骤4 - 运行命令以查看注册的路由
php artisan route:list
步骤5:玩转您的模块
关于文件夹结构
我尽量使结构尽可能小,可能会添加许多扩展。然而,人们通常都有自己的习惯来创建自己的结构。
如果您想创建自己的结构,也可以查看laravel-file-generator项目。
仓库-服务模式与Laravel Eloquent
关于是否在Laravel中实现仓库-服务模式存在争议……好吧,在阅读了许多博客、文章以及我多年的经验之后,我可以肯定地告诉您,Laravel并非为像Java/Spring那样的纯仓库-服务模式而设计。
一个主要担忧是,Eloquent模型使用Active Record,这与Data Mapper完全不同。如果您仍然决定在Laravel中实现纯仓库-服务模式,您最终会陷入一个噩梦,代码会变得庞大、重复且丑陋,因为您正在重新编写Eloquent模型。
然而,此包仍然生成一个仓库文件夹,它只是一个查询集合,没有其他功能。我仍然建议您将所有Eloquent-like查询放入一个单独的类中,这不仅仅关乎技术原则,而是关于代码的可重用性和排列。
您可以在网上搜索并阅读博客,有一些开源项目尝试在Laravel中应用仓库-服务模式……是的,非常复杂,而且……我的问题是为什么您最初选择使用Laravel?
有时您可能在查询上执行缓存,您可以查看装饰器设计模式以帮助您设置。
外观服务
外观服务是Laravel的一个强大功能。(注意:Laravel的外观类不是我们通常所知的标准外观设计模式)
结构将仓库(查询集合)作为参数,因此您只需将所有业务逻辑放在服务类中。您可能会注意到Service附加了一个接口,这只是为了更轻松地生成服务函数,如果您想,您可以删除它。
目前默认将一个端点映射到一个服务函数。
模型
由于结构基于模块化,我建议您在每个模块文件夹中为每个模型绑定 $table 和 $connection。
安全
如果您发现任何与安全相关的问题,请通过电子邮件 ryandadeng@gmail.com 反馈,而不是使用问题跟踪器。
许可证
许可证。请参阅 许可证文件 了解更多信息。