tmj / modules
Laravel 模块
Requires
- php: >=5.4.0
- laravel/framework: 5.2.*
- laravelcollective/html: ~5.0
- pingpong/generators: ^2.2
- pingpong/support: ^2.2
Requires (Dev)
- mockery/mockery: ~0.9
- phpunit/phpunit: ~4
- dev-master
- v2.3.5
- v2.3.4
- v2.3.3
- v2.3.2
- v2.3.1
- v2.3
- 2.2.x-dev
- v2.2.0
- 2.1.x-dev
- v2.1.6
- v2.1.5
- v2.1.4
- v2.1.0
- 2.0.x-dev
- 2.0.21
- 2.0.18
- 2.0.17
- 2.0.14
- 2.0.13
- 2.0.12
- 2.0.11
- 2.0.10
- 2.0.8
- 2.0.7
- 2.0.6
- 2.0.4
- 2.0.2
- 2.0.0
- 1.2.1
- 1.2.0
- 1.1.11
- 1.1.10
- 1.1.9
- 1.1.8
- 1.1.7
- 1.1.6
- 1.1.5
- 1.1.4
- 1.1.3
- 1.1.2
- 1.1.1
- 1.1.0
- 1.0.x-dev
- 1.0.11
- 1.0.10
- 1.0.9
- 1.0.8
- 1.0.7
- 1.0.6
- 1.0.5
- 1.0.4
- 1.0.3
- 1.0.2
- 1.0.1
- 1.0.0
This package is not auto-updated.
Last update: 2024-09-28 20:03:49 UTC
README
tmj/modules
是一个用于管理大型 Laravel 应用程序的模块化包。模块类似于 Laravel 包,它包含一些视图、控制器或模型。此包在 Laravel 4 和 Laravel 5 中都得到了支持和测试。 它是由 pingpong/modules
分支而来的。
升级指南
到 2.3
如果您已更新到版本 2.3
,请阅读 此发布说明
您的配置文件将类似于 这个。
到 2.0.18
如果您已更新到版本 2.0.18
,请阅读 这个发布说明。
到 2.0.10
之前,我们从该包添加了两个服务提供者。在版本 2.0.5
中,我们只需要注册一个服务提供者。现在,我们可以从 providers
数组中删除 Pingpong\Modules\Providers\BootstrapServiceProvider
,因为现在它由 Pingpong\Modules\ModulesServiceProvider
自动注册。
从 Laravel 4 到 Laravel 5
如果您正在使用此包并将 Laravel 应用程序从 Laravel 4 升级到 Laravel 5,如果您使用此包,有一些事情要做。您可能会收到一些关于配置未加载的错误。为了解决这个问题,请按照以下说明操作。
- 如果您发布了包的配置文件,您需要将配置文件从
app/config/packages/pingpong/modules/config.php
移动到app/config/modules.php
。 - 如果您未发布包的配置文件,并且您想发布配置文件,只需运行
php artisan vendor:publish
命令即可。
从 1.1.* 到 1.2.0
新的配置文件。此破坏性更改影响了如果您从该包发布配置文件的情况。为了解决这个问题,在您的 app/config/packages/pingpong/modules/
目录中创建一个名为 config.php
的新配置文件。接下来,将 paths.php
文件中的数组内容移动到新配置文件中的 paths
数组中。您的配置文件将类似于 这个。
安装
通过 Composer 安装
{ "require": { "tmj/modules": "^2.3" } }
然后在您的 composer.json 文件中添加以下内容
快速安装
您还可以使用以下命令简化上述代码
$ composer require tmj/modules
添加服务提供者
接下来,在 config/app.php
中添加以下服务提供者。
'providers' => [ ... Pingpong\Modules\ModulesServiceProvider::class ],
接下来,在同一个文件中添加以下别名到 aliases
数组。
'aliases' => [ 'Module' => Pingpong\Modules\Facades\Module::class, ],
测试
在 phpunit.xml
中添加以下目录。
... <testsuite name="Application Test Suite"> ... <directory suffix="Test.php">./modules</directory> </testsuite> ...
接下来,通过运行以下命令发布包的配置文件
$ php artisan vendor:publish
自动加载
默认情况下,控制器、实体或存储库不会自动加载。您可以使用 psr-4
来加载所有这些内容。例如
{ "autoload": { "psr-4": { "App\\": "app/", "Modules\\": "modules/" } } }
配置
modules
- 用于保存生成的模块。assets
- 用于保存每个模块的模块资产。migration
- 用于保存如果发布模块迁移,则模块的迁移。generator
- 用于生成模块文件夹。scan
- 用于允许扫描其他文件夹。enabled
- 如果设置为true
,则包将扫描其他路径。默认值为false
paths
- 可以被包自动扫描的路径列表。composer
vendor
- Composer 提供商名称。author.name
- Composer 作者名称。author.email
- Composer 作者邮箱。
cache
enabled
- 如果设置为true
,则扫描的模块(所有模块)将自动缓存。默认值为false
key
- 缓存名称。lifetime
- 缓存有效期。
创建模块
要创建新模块,您可以直接运行
$ php artisan module:make <module-name>
<模块名>
- 必要的。模块将被创建的名称。
创建新模块
$ php artisan module:make Blog
创建多个模块
$ php artisan module:make Blog User Auth
默认情况下,如果您创建一个新模块,将会自动添加一些资源,如控制器、种子类或提供者。如果您不想添加这些资源,可以添加 --plain
标志,以生成一个纯模块。
$ php artisan module:make Blog --plain
或者
$ php artisan module:make Blog -p
命名约定
因为我们使用 psr-4
自动加载模块,所以我们强烈建议使用 StudlyCase
惯例。
文件夹结构
laravel-app/
app/
bootstrap/
vendor/
modules/
├── Blog/
├── Assets/
├── Config/
├── Console/
├── Database/
├── Migrations/
├── Seeders/
├── Entities/
├── Events/
├── Http/
├── Controllers/
├── Middleware/
├── Requests/
├── routes.php
├── Interfaces/
├── Jobs/
├── Listeners/
├── Policies/
├── Providers/
├── BlogServiceProvider.php
├── Repositories/
├── Resources/
├── lang/
├── views/
├── Repositories/
├── Tests/
├── composer.json
├── module.json
├── start.php
Artisan 命令
创建新模块。
$ php artisan module:make blog
使用指定的模块。请参见 #26。
$ php artisan module:use blog
在命令行中显示所有模块。
$ php artisan module:list
为指定的模块创建新命令。
$ php artisan module:make-command CustomCommand blog
$ php artisan module:make-command CustomCommand --command=custom:command blog
$ php artisan module:make-command CustomCommand --namespace=Modules\Blog\Commands blog
为指定的模块创建新迁移。
$ php artisan module:make-migration create_users_table blog
$ php artisan module:make-migration create_users_table --fields="username:string, password:string" blog
$ php artisan module:make-migration add_email_to_users_table --fields="email:string:unique" blog
$ php artisan module:make-migration remove_email_from_users_table --fields="email:string:unique" blog
$ php artisan module:make-migration drop_users_table blog
回滚、重置和刷新模块迁移。
$ php artisan module:migrate-rollback
$ php artisan module:migrate-reset
$ php artisan module:migrate-refresh
回滚、重置和刷新指定模块的迁移。
$ php artisan module:migrate-rollback blog
$ php artisan module:migrate-reset blog
$ php artisan module:migrate-refresh blog
为指定的模块创建新种子。
$ php artisan module:make-seed users blog
从指定的模块迁移。
$ php artisan module:migrate blog
从所有模块迁移。
$ php artisan module:migrate
从指定的模块播种。
$ php artisan module:seed blog
从所有模块播种。
$ php artisan module:seed
为指定的模块创建新控制器。
$ php artisan module:make-controller SiteController blog
将指定模块的资产发布到公共目录。
$ php artisan module:publish blog
将所有模块的资产发布到公共目录。
$ php artisan module:publish
为指定的模块创建新模型。
$ php artisan module:make-model User blog
php artisan module:make-model User blog --fillable="username,email,password"
为指定的模块创建新仓库。
$ php artisan module:make-repository UserRepository user
为指定的模块创建新策略。
$ php artisan module:make-policy UserPolicy user
为指定的模块创建新事件。
$ php artisan module:make-event SomeEvent user
为指定的模块创建新监听器。
$ php artisan module:make-listener EventListener user --event=SomeEvent
根据注册生成所有模块的缺失事件和监听器。
$ php artisan module:event-generate
为指定的模块创建新作业。
$ php artisan module:make-job GetUsers user
为指定的模块创建新测试。
$ php artisan module:make-test ExampleTest user
为指定的模块创建新服务提供者。
$ php artisan module:make-provider MyServiceProvider blog
发布指定模块或所有模块的迁移。当您想要回滚迁移时,这很有帮助。您也可以运行 php artisan migrate
命令而不是 php artisan module:migrate
命令来迁移迁移。
对于指定的模块。
$ php artisan module:publish-migration blog
对于所有模块。
$ php artisan module:publish-migration
启用指定模块。
$ php artisan module:enable blog
禁用指定模块。
$ php artisan module:disable blog
生成新的中间件类。
$ php artisan module:make-middleware Auth
更新指定模块的依赖项。
$ php artisan module:update ModuleName
更新所有模块的依赖项。
$ php artisan module:update
显示模块列表。
$ php artisan module:list
外观
获取所有模块。
Module::all();
获取所有缓存的模块。
Module::getCached()
获取排序后的模块。模块将根据 module.json
文件中的 priority
键进行排序。
Module::getOrdered();
获取扫描的模块。
Module::scan();
查找特定模块。
Module::find('name');
或者
Module::get('name');
查找模块,如果存在,则返回 Module
实例,否则抛出 Pingpong\Modules\Exeptions\ModuleNotFoundException
。
Module::findOrFail('module-name');
获取扫描的路径。
Module::getScanPaths();
获取所有模块作为一个集合实例。
Module::toCollection();
根据状态获取模块。1 为活动状态,0 为非活动状态。
Module::getByStatus(1);
检查指定模块。如果存在,则返回 true
,否则返回 false
。
Module::has('blog');
获取所有启用的模块。
Module::enabled();
获取所有禁用的模块。
Module::disabled();
获取所有模块的数量。
Module::count();
获取模块路径。
Module::getPath();
注册模块。
Module::register();
启动所有可用的模块。
Module::boot();
获取所有启用的模块作为一个集合实例。
Module::collections();
从指定模块获取模块路径。
Module::getModulePath('name');
从指定模块获取资产路径。
Module::getAssetPath('name');
获取此包的配置值。
Module::config('composer.vendor');
获取使用的存储路径。
Module::getUsedStoragePath();
获取用于 cli 会话的使用的模块。
Module::getUsedNow();
或者
Module::getUsed();
设置用于 cli 会话的使用的模块。
Module::setUsed('name');
获取模块的资产路径。
Module::getAssetsPath();
从特定模块获取资产URL。
Module::asset('blog:img/logo.img');
通过模块名称安装指定的模块。
Module::install('pingpong-modules/hello');
更新指定模块的依赖项。
Module::update('hello');
模块实体
从特定模块获取一个实体。
$module = Module::find('blog');
获取模块名称。
$module->getName();
获取小写的模块名称。
$module->getLowerName();
获取大驼峰式的模块名称。
$module->getStudlyName();
获取模块路径。
$module->getPath();
获取额外路径。
$module->getExtraPath('Assets');
禁用指定模块。
$module->enable();
启用指定模块。
$module->disable();
删除指定的模块。
$module->delete();
自定义命名空间
当你创建一个新的模块时,它也会为Lang
、View
和Config
注册新的自定义命名空间。例如,如果你创建了一个名为blog的新模块,它也会为该模块注册新的命名空间/提示blog。然后,你可以使用该命名空间来调用Lang
、View
或Config
。以下是一些使用示例
调用Lang
Lang::get('blog::group.name');
调用View
View::make('blog::index') View::make('blog::partials.sidebar')
调用Config
Config::get('blog.name')
发布模块
你创建过laravel模块吗?是的,我创建过。那么,我想发布我的模块。在哪里发布?这就是问题。答案是什么?答案是Packagist。在pingpong/modules版本>=1.2.0中,当你生成模块时,你会看到一个新文件生成,名为composer.json
。
自动扫描供应商目录
默认情况下,vendor
目录不会被自动扫描,你需要更新配置文件来允许这样做。将scan.enabled
值设置为true
。例如
// file config/modules.php return [ //... 'scan' => [ 'enabled' => true ] //... ]
你可以使用module:list
命令来验证模块是否已安装
$ php artisan module:list
发布模块
在创建模块并确定你的模块将被其他开发者使用后,你可以将你的模块推送到github或bitbucket,然后你可以将你的模块提交到packagist网站。
你可以按照以下步骤发布你的模块。
- 创建一个模块。
- 将模块推送到github。
- 将你的模块提交到packagist网站。提交到packagist非常简单,只需提供你的github仓库,点击提交即可。