timehunter/laravel-api-module-generator

一个简单的Laravel API模块服务生成器,为您提供干净、轻量级的代码结构。

dev-master 2018-12-27 02:17 UTC

This package is auto-updated.

Last update: 2024-08-27 15:14:00 UTC


README

Latest Version on Packagist Total Downloads

重要更新

该项目尚未完成,仍缺少许多功能。然而,如果您只需要一个简单的结构,仍然可以使用它。我将在接下来的几天内慢慢更新项目。

这是一个轻量级的基于模块的模板生成器。

请注意,如果您与此包相关有任何问题,请提交工单。我只有在发现错误时才会更新。

描述

一个简单的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 反馈,而不是使用问题跟踪器。

许可证

许可证。请参阅 许可证文件 了解更多信息。