mnabialek / laravel-modular
允许创建Laravel模块以优化项目结构
Requires
- laravel/framework: ^5.3
Requires (Dev)
- fzaninotto/faker: ~1.4
- mockery/mockery: ^0.9.5
- phpunit/phpunit: ^5.4
- satooshi/php-coveralls: dev-master
This package is not auto-updated.
Last update: 2024-09-20 22:37:24 UTC
README
此模块可以使管理您的Laravel 5应用程序变得更加容易。不再需要将数十个或数百个文件放入单个目录中。
现在您可以为您Laravel 5应用程序创建多个模块,每个模块都将拥有自己的结构(根据您的决定)。
支持的版本
在Laravel 5.3+中安装,请使用此分支,然而在Laravel < 5.3中安装,请参阅版本0.1。
安装
-
对于Laravel 5.3+,在控制台中运行以下命令以安装此模块。
composer require mnabialek/laravel-modular 0.2.*
-
打开
config/app.php
并-
在相同部分(
providers
)中添加Mnabialek\LaravelModular\Providers\ModularServiceProvider::class,
在
aliases
部分中 -
在相同部分(
providers
)中添加'Modular' => Mnabialek\LaravelModular\Facades\Modular::class,
在您的控制台中运行以发布默认配置文件、示例应用程序文件(发布在
app/Core
中)和示例占位符文件
-
-
php artisan vendor:publish --provider="Mnabialek\LaravelModular\Providers\ModularServiceProvider"
在默认的种子文件
database/seeds/DatabaseSeeder
中,在run
方法的末尾添加 -
Modular::seed($this);
-
在
app/Providers/RouteServiceProvider.php
中,在map
函数的末尾添加\Modular::loadRoutes($this->app['router'], 'web'); \Modular::loadRoutes($this->app['router'], 'api');
-
在
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
结构 - 您可以在此处指定应创建哪些 directories
和 files
。完成后,运行
php artisan module:make TestModule2
现在,根据您的需求创建的新模块。太好了,您已经创建了您想要的第一个模块!
自定义
此模块可高度自定义。其概念基于使用组占位符,在每组中,您可以定义应创建哪些目录和文件(如果您想在这些目录中放置文件,可以省略目录,它们将自动创建)。
您可以创建多个占位符组,可以配置许多内容。只需转到 config/modular.php
并查看此文件的示例设置和注释 - 如果您想更改它们,只需这样做,生成新的示例模块(或文件)并查看会发生什么。
对于所有占位符组,以下替换将在文件名和文件内容中进行(假设您没有将默认的 {
和 }
分隔符更改为自定义分隔符)
{module}
- 这将被更改为模块名称{class}
- 这将被更改为模块/子模块/文件的名称{moduleNamespace}
- 这将被更改为模块命名空间{namespace}
- 这将被更改为模块目录的主要命名空间{plural|lower}
- 这将被更改为模块的复数名称(小写)
路由自定义
默认情况下,对于每个模块,您可以加载2个路由文件 - web.php
和 api.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个选项创建 - active
和routes
- 默认情况下它们都设置为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 许可证 的许可。