suitetea / modularlaravel
允许您模块化组织Laravel代码。
Requires
- php: >=5.4.0
- illuminate/config: 4.2.*@dev|~5.0
- illuminate/events: 4.2.*@dev|~5.0
- illuminate/support: 4.2.*@dev|~5.0
Requires (Dev)
- mockery/mockery: ~0.9
- phpunit/phpunit: 3.7.*
This package is auto-updated.
Last update: 2024-09-20 06:11:41 UTC
README
模块化Laravel
模块化Laravel允许在应用程序中将Laravel代码组织成更小的集合。
安装
通过Composer
{
"require": {
"suitetea/modularlaravel": "0.5.*"
}
}
然后运行Composer更新
composer update
安装完成后,将服务提供者添加到app/config/app.php
的提供者数组中。
SuiteTea\ModularLaravel\ModularLaravelServiceProvider
模块
模块是自包含的包,可以通过Composer安装或手动实例化。
模块遵循PSR-4包结构,并应遵守其标准。
注册
模块需要向ModularLaravel进行注册。以下是一个带有可用配置的示例注册:
ModularLaravel::register([
'name' => 'attachments',
'directory' => 'app/modules/attachments',
'requires' => [
'uploader',
'file_system'
],
'namespace' => 'Modules\Attachments',
'autoload' => [
'files' => [
'routes.php'
],
'classmap' => [
'controllers'
]
]
]);
预注册
在实例化ModularLaravel之前,您可以预注册一个模块。当模块通过Composer安装时,这很有用。您可以预注册模块,并在Laravel启动时尝试激活该模块。
use SuiteTea\ModularLaravel\Manager;
Manager::preRegister([
'name' => 'attachments',
'directory' => 'app/modules/attachments',
'requires' => [
'uploader',
'file_system'
],
'namespace' => 'Modules\Attachments',
'autoload' => [
'files' => [
'routes.php'
],
'classmap' => [
'controllers'
]
]
]);
配置选项
- name(必需)- 模块名称。用于注册和依赖管理。
- directory(必需)- 模块的根目录。(如果通过Composer自动加载,可以使用
__DIR__
作为快捷方式) - requires - 此模块依赖的任何模块。必须安装和激活这些依赖项才能激活此模块。
- namespace - 您可以为模块指定一个特定的命名空间,以供类自动加载器使用。指定此选项将使用类自动加载器注册目录。如果模块未通过Composer安装,这很有帮助。
- autoload - 与Composer的自动加载类似。仅接受'files'和'classmap'。'files'将包括此数组中的任何文件。'classmap'将添加这些目录到类自动加载器。
事件
在启动时,ModularLaravel会触发两种类型的事件。
- modules.active - 当模块成功激活时触发。此事件将模块名称追加到事件名称,例如:
"modules.active attachments"
。 - modules.activation_failed - 当无法激活模块时触发。类似于
modules.active
事件,此事件将模块名称追加到事件末尾,例如:"modules.activation_failed attachments"
。
视图
模块可以包含一个views
目录。ModularLaravel注册一个与模块名称相同的视图命名空间。这有助于引用特定模块的视图。
示例:一个名为upload.blade.php
的视图文件可以按如下方式引用 - `View::make('attachments::upload');
配置文件
模块可以在模块目录中的config
目录内包含配置文件。ModularLaravel注册一个与模块名称相同的配置命名空间,全部小写。
示例:位于模块目录中config/config.php
的配置文件可以通过Config::('modulename::configitem')
访问。同样,可以使用点表示法访问不使用默认名称config.php
的配置文件:Config::('modulename::file.option')
===
待办事项
- 创建一个配置数组,指定要激活的模块。这可以通过手动编码或通过数据库动态完成。