mnabialek/laravel-modular

允许创建Laravel模块以优化项目结构

v0.2.6 2017-01-24 17:18 UTC

README

Build Status Coverage Status Scrutinizer Code Quality StyleCI

此模块可以使管理您的Laravel 5应用程序变得更加容易。不再需要将数十个或数百个文件放入单个目录中。

现在您可以为您Laravel 5应用程序创建多个模块,每个模块都将拥有自己的结构(根据您的决定)。

支持的版本

在Laravel 5.3+中安装,请使用此分支,然而在Laravel < 5.3中安装,请参阅版本0.1

安装

  1. 对于Laravel 5.3+,在控制台中运行以下命令以安装此模块。

    composer require mnabialek/laravel-modular 0.2.*

  2. 打开 config/app.php

    • 在相同部分(providers)中添加

       Mnabialek\LaravelModular\Providers\ModularServiceProvider::class,

      aliases 部分中

    • 在相同部分(providers)中添加

      'Modular' => Mnabialek\LaravelModular\Facades\Modular::class,

      在您的控制台中运行以发布默认配置文件、示例应用程序文件(发布在 app/Core 中)和示例占位符文件

  3. php artisan vendor:publish --provider="Mnabialek\LaravelModular\Providers\ModularServiceProvider"

    在默认的种子文件 database/seeds/DatabaseSeeder 中,在 run 方法的末尾添加

  4.  Modular::seed($this);
  5. app/Providers/RouteServiceProvider.php 中,在 map 函数的末尾添加

    \Modular::loadRoutes($this->app['router'], 'web');
    \Modular::loadRoutes($this->app['router'], 'api');
  6. database/factories/ModelFactory.php 中(此步骤仅适用于Laravel 5.1+),在文件末尾添加

    Modular::loadFactories($factory);

入门

要开始,请运行

php artisan module:make TestModule

此命令将创建您的 TestModule 模块结构。打开目录并查看其结构。如您所见,一些文件使用了 app/Core 抽象类(这些文件是在安装期间创建的)。

首先决定,您是否想使用 app/Core 文件。如果不使用,您可以删除此目录。转到 resources/stubs/modular 并查看示例占位符。现在您可以根据需要修改它们(您可以根据需要删除所有对 app/Core 文件的引用,创建新的占位符等)。

现在打开 config/modular.php 文件,转到 stubs_groups 部分,调整 default 结构 - 您可以在此处指定应创建哪些 directoriesfiles。完成后,运行

php artisan module:make TestModule2

现在,根据您的需求创建的新模块。太好了,您已经创建了您想要的第一个模块!

自定义

此模块可高度自定义。其概念基于使用组占位符,在每组中,您可以定义应创建哪些目录和文件(如果您想在这些目录中放置文件,可以省略目录,它们将自动创建)。

您可以创建多个占位符组,可以配置许多内容。只需转到 config/modular.php 并查看此文件的示例设置和注释 - 如果您想更改它们,只需这样做,生成新的示例模块(或文件)并查看会发生什么。

对于所有占位符组,以下替换将在文件名和文件内容中进行(假设您没有将默认的 {} 分隔符更改为自定义分隔符)

  • {module} - 这将被更改为模块名称
  • {class} - 这将被更改为模块/子模块/文件的名称
  • {moduleNamespace} - 这将被更改为模块命名空间
  • {namespace} - 这将被更改为模块目录的主要命名空间
  • {plural|lower} - 这将被更改为模块的复数名称(小写)

路由自定义

默认情况下,对于每个模块,您可以加载2个路由文件 - web.phpapi.php(如果您遵循了安装说明)。然而,您也可以决定为每个模块使用单个路由文件。在这种情况下,请在安装步骤5中使用

\Modular::loadRoutes($this->app['router']);

您还可以选择在Laravel 5.3中将整个路由文件作为默认值分组。在这种情况下,您也可以在RouteServiceProvider中这样做 - 在这种情况下,请记住修改您的路由模板,以确保不要两次应用相同的中间件,因为这将在您的Laravel应用程序中引起意外问题。

可用命令

module:make

此命令创建新的模块。您可以一次创建一个或多个模块。

示例用法

php artisan module:make Product Order

您可以在config/modular.php中的stubs_groups部分控制运行此命令时要创建的内容。如果您想使用多种类型的模块,可以使用--group=test传递可选的模板组名称。

module:files

允许在已存在的模块中创建文件。

示例用法

php artisan module:make Product Camera Radio

您可以在config/simplemodules.php中的stubs_groups部分控制运行此命令时要创建的内容。您可以使用--group=test传递可选的模板组名称。

默认情况下,它将在现有模块中创建“子模块”。

module:create-migration

在给定的模块中创建迁移文件

示例用法

php artisan module:make-migration Product create_products_table

您还可以使用可选的--type--table选项来设置迁移的表和类型(如果您想,当然可以创建自己的类型)以创建给定类型的模板迁移,例如

php artisan module:make-migration Product create_camera_table --table=cameras --type=create

它将创建类型为create的迁移 - 因此在up方法中将创建cameras表,在down方法中将删除cameras

module:seed

运行给定模块的主数据填充器。您需要记住,只有主数据填充器将被启动。如果您在单个模块中有多于一个的数据填充器,您应该在主数据填充器中手动运行额外的数据填充器。

示例用法

php artisan module:seed Product Order

migrate

此模块注册模块路径,当您运行默认的Laravel migrate命令时,所有迁移都将运行(包括通用迁移和所有活动模块的迁移)

示例用法

php artisan migrate

db:seed

如果您在安装部分中完成了所有步骤,当您运行db:seed命令时,所有活动模块的主数据填充器都将运行

示例用法

php artisan db:seed

优化

默认情况下(您可以在配置文件中自定义它),所有模块都使用2个选项创建 - activeroutes - 默认情况下它们都设置为true。所有模块选项的一般规则如下 - 如果配置文件中为模块设置了选项,则将使用该选项,否则将进行额外的检查以计算。这不适用于active选项 - 如果它不存在,则假定其为true

模块的可选项

  • active - 模块是否活动
  • provider - 模块是否有服务提供者
  • factory - 模块是否有模型工厂
  • routes - 模块是否有routes.php文件
  • seeder - 模块是否有数据填充器文件

除了使用自定义路由文件之外,您还可以使用其他设置

  • api_routes - 模块是否有api.php路由文件
  • web_routes - 模块是否有web.php路由文件

选项的前缀应与路由文件的名称匹配,如果您想使用额外的extra.php路由文件,则可以使用extra_routes选项。

请注意,如果在配置文件中设置的选项无效,可能会发生一些意外情况。例如,如果您将 provider 设置为 false,但后来您将服务提供者添加到模块中,除非您将 provider 选项更改为 true 或完全从该模块的配置文件中删除它,否则它将不会加载。

版本说明

请参阅 变更日志

许可证

此软件包受 MIT 许可证 的许可。