mnabialek / laravel-simple-modules
允许创建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 21:38:16 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
部分 -
'Modular' => Mnabialek\LaravelModular\Facades\Modular::class,
运行
-
-
在您的控制台中发布默认配置文件、示例应用程序文件(发布在
app/Core
)和示例占位符文件php artisan vendor:publish --provider="Mnabialek\LaravelModular\Providers\ModularServiceProvider"
在默认的种子文件
database/seeds/DatabaseSeeder
中,在run
方法末尾添加 -
在
app/Providers/RouteServiceProvider.php
中,在map
函数末尾添加Modular::seed($this);
-
在
database/factories/ModelFactory.php
中(此步骤仅适用于Laravel 5.1+),在文件末尾添加\Modular::loadRoutes($this->app['router'], 'web'); \Modular::loadRoutes($this->app['router'], 'api');
-
开始使用
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.php
和 api.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个选项创建 - 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 许可证 许可。