mnabialek/laravel-simple-modules

允许创建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 部分

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

      运行

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

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

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

  4. app/Providers/RouteServiceProvider.php 中,在 map 函数末尾添加

     Modular::seed($this);
  5. database/factories/ModelFactory.php 中(此步骤仅适用于Laravel 5.1+),在文件末尾添加

    \Modular::loadRoutes($this->app['router'], 'web');
    \Modular::loadRoutes($this->app['router'], 'api');
  6. 开始使用

    Modular::loadFactories($factory);

要开始使用,请运行以下命令

php artisan module:make TestModule

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

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

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

php artisan module:make TestModule2

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

自定义

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

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

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

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

路由自定义

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

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

仅安装步骤5。

您还可以选择在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 许可证 许可。