suitetea/modularlaravel

允许您模块化组织Laravel代码。

0.5.4 2014-11-10 22:10 UTC

This package is auto-updated.

Last update: 2024-09-20 06:11:41 UTC


README

Build Status

模块化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')

===

待办事项

  • 创建一个配置数组,指定要激活的模块。这可以通过手动编码或通过数据库动态完成。