Laravel 模块化开发

2020-01-10  本文已影响0人  fourn熊能

一、安装

composer require nwidart/laravel-modules

在composer 中配置:



配置完成后执行:

composer dump-autoload

二、基本使用

创建module:

php artisan module:make Blog

会在 Modules 目录下创建出一个类似APP的目录来,创建一个干净的module可以使用 --plain 或者 -p 标记。Lang View Config 在每个module中都有独立的命名空间,例如:

三、配置文件

框架自身带有一些配置选项,首先发布配置文件:
发布配置文件 php artisan vendor:publish --provider="Nwidart\Modules\LaravelModulesServiceProvider"

四、辅助方法

$path = module_path('Blog'); 获取模块路径

五、命令行工具

实用命令:

生成器命令:

六、门面方法

Module::macro('hello', function() {
    echo "I'm a macro";
});

七、模块Module方法

八、发布模块

将模块以composer包的形式发布

  1. 创建一个模块
  2. 确保 type 属性在 composer.json 文件中申明为 laravel-module
  3. 包名必须以 -module 结尾,例如 <namespace>/<name>-module,将会被自动安装到 Module/<name> 目录
  4. 发布到packagist

你需要执行额外一步确保模块安装到 Modules 目录下
安装 joshbrw/laravel-module-installer 插件,它会将文件自动移动到 Modules 目录

九、发布模块资源文件

模块可以像其他包一样发布文件(创建模块时不能使用 -plain 标志)

发布配置:

发布视图:


核心部分是loadViewsFrom方法的调用

发布语言包:

如果你想使用laravel工厂,你必须在你的服务提供商中添加以下内容:

十、模块命令行指令

回顾一下创建模块命令:
php artisan module:make-command CreatePostCommand Blog

您可以使用commands为laravel方法注册命令,该方法在服务提供者类中可用。

#

十一、模块事件

回顾一下创建模块事件和监听器:

php artisan module:make-event BlogPostWasUpdated Blog
php artisan module:make-listener NotifyAdminOfNewPost Blog

之后需要在laravel中注册他们,有两种办法:

  1. 手动在模块的服务提供者中调用
    $this->app['events']->listen(BlogPostWasUpdated::class, NotifyAdminOfNewPost::class);
  2. 在app/命名空间下为模块创建一个事件服务提供者(EventServiceProvider)包含他的所有事件

不要忘记加载此服务提供者,将其添加到module.json文件中。

上一篇 下一篇

猜你喜欢

热点阅读