一锅棕、安裝
composer require nwidart/laravel-modules
在composer 中配置:
配置完成后執(zhí)行:
composer dump-autoload
二写隶、基本使用
創(chuàng)建module:
php artisan module:make Blog
會在 Modules 目錄下創(chuàng)建出一個類似APP的目錄來诡曙,創(chuàng)建一個干凈的module可以使用 --plain 或者 -p 標記门怪。Lang View Config 在每個module中都有獨立的命名空間诅妹,例如:
三珍策、配置文件
框架自身帶有一些配置選項,首先發(fā)布配置文件:
發(fā)布配置文件 php artisan vendor:publish --provider="Nwidart\Modules\LaravelModulesServiceProvider"
- Default namespace生成模塊時默認的命名空間
- Overwrite the generated files覆蓋生成模塊時使用的默認生成存根宅倒。這對于定制不同文件的輸出非常有用拐迁。
- Overwrite the paths覆蓋包中使用的默認路徑祟蚀。
- Scan additional folders for modules這是默認禁用的鹏溯。一旦啟用匀借,包將在指定的路徑數(shù)組中查找模塊。
- Composer file template文件模板composer
- Caching如果您有許多模塊芒率,那么最好緩存這些信息(比如多個模塊)。例如多個module.json文件)化焕。
- Registering custom namespace決定哪一個自定義命名空間需要使用package來注冊穗泵。如果某個設置為false,package不會處理它的注冊坐桩。
四闷叉、輔助方法
$path = module_path('Blog'); 獲取模塊路徑
五嘿期、命令行工具
實用命令:
- module:make 創(chuàng)建一個新模塊
- module:use 使用一個模塊(這允許執(zhí)行其他命令時不用輸入模塊名)
- module:unuse 和上面相反
- module:list 列出所有可用模塊
- module:migrate 執(zhí)行某個模塊的數(shù)據(jù)遷移(或者所有模塊的)
- php artisan module:migrate-rollback Blog 執(zhí)行模塊最近一次遷移的回滾
- php artisan module:migrate-refresh Blog 執(zhí)行模塊所有回滾后執(zhí)行所有遷移
- php artisan module:migrate-reset Blog 執(zhí)行模塊所有回滾
- php artisan module:seed Blog 執(zhí)行模塊數(shù)據(jù)填充
- php artisan module:publish-migration Blog 發(fā)布遷移
- php artisan module:publish-config Blog 發(fā)布配置
- php artisan module:publish-translation Blog 發(fā)布語言包
- php artisan module:enable Blog 開啟模塊
- php artisan module:disable Blog 關閉模塊
- php artisan module:update Blog 升級模塊
生成器命令:
- php artisan module:make-command CreatePostCommand Blog
- php artisan module:make-migration create_posts_table Blog
- php artisan module:make-seed seed_fake_blog_posts Blog
- php artisan module:make-controller PostsController Blog
- php artisan module:make-model Post Blog (可以使用-m同步生成遷移文件)
- php artisan module:make-provider BlogServiceProvider Blog
- php artisan module:make-middleware CanReadPostsMiddleware Blog
- php artisan module:make-mail SendWeeklyPostsEmail Blog
- php artisan module:make-notification NotifyAdminOfNewComment Blog
- php artisan module:make-listener NotifyUsersOfANewPost Blog
- php artisan module:make-listener NotifyUsersOfANewPost Blog --event=PostWasCreated
- php artisan module:make-listener NotifyUsersOfANewPost Blog --event=PostWasCreated --queued
- php artisan module:make-request CreatePostRequest Blog
- php artisan module:make-event BlogPostWasUpdated Blog
- php artisan module:make-job JobName Blog(可以使用-sync生成同步任務)
- php artisan module:route-provider Blog 為指定的模塊生成給定的路由服務提供程序脊串。
- php artisan module:make-factory FactoryName Blog
- php artisan module:make-policy PolicyName Blog
- php artisan module:make-rule ValidationRule Blog
- php artisan module:make-resource PostResource Blog
- php artisan module:make-resource PostResource Blog --collection
- php artisan module:make-test EloquentPostRepositoryTest Blog
六篡悟、門面方法
- Module::all(); 獲取所有模塊
- Module::getCached() 獲取所有緩存的模塊
- Module::getOrdered(); 獲取排序后的所有模塊(按照module.json文件中的priority排序)
- Module::scan(); 獲取掃描過的模塊
- Module::find('name'); 查詢某個模塊(返回Module類)
- Module::get('name');
- Module::findOrFail('module-name');
- Module::getScanPaths(); 獲取掃描的路徑
- Module::toCollection(); 獲取模塊集合
- Module::getByStatus(1); 按照狀態(tài)獲取模塊(1可用0不可用)
- Module::has('blog'); 判斷模塊是否存在
- Module::allEnabled(); 獲取所有可用模塊
- Module::allDisabled();
- Module::count(); 統(tǒng)計模塊數(shù)量
- Module::getPath(); 獲取模塊路徑
- Module::register(); 注冊模塊
- Module::boot(); 初始化模塊
- Module::collections(); 獲取所有可用模塊的集合
- Module::getModulePath('name'); 獲取某個模塊路徑
- Module::assetPath('name'); 獲取某個模塊的資源路徑
- Module::config('composer.vendor'); 從這個包中獲取配置值码倦。
- Module::getUsedStoragePath(); 獲取使用的存儲路徑。
- Module::getUsedNow(); 獲取cli會話正在使用的模塊诊胞。
- Module::getUsed();
- Module::setUsed('name'); 設置會話使用的模塊
- Module::asset('blog:img/logo.img'); 從某個模塊獲取資源路徑
- Module::install('nwidart/hello'); 根據(jù)給定的模塊名稱安裝指定的模塊。
- Module::update('hello'); 更新指定模塊的依賴項。
將宏添加到模塊存儲庫。
Module::macro('hello', function() {
echo "I'm a macro";
});
- Module::hello(); 調(diào)用宏
- Module::getRequirements('module name'); 獲取依賴的其他模塊
七熙宇、模塊Module方法
- $module = Module::find('blog');
- $module->getName();
- $module->getLowerName();
- $module->getStudlyName();
- $module->getPath(); 模塊路徑
- $module->getExtraPath('Assets'); 模塊其他路勁
- $module->disable();
- $module->enable();
- $module->delete();
- $module->getRequires(); 獲取模塊依賴的其他模塊
八赊时、發(fā)布模塊
將模塊以composer包的形式發(fā)布
- 創(chuàng)建一個模塊
- 確保 type 屬性在 composer.json 文件中申明為 laravel-module
- 包名必須以 -module 結(jié)尾湿故,例如 <namespace>/<name>-module,將會被自動安裝到 Module/<name> 目錄
- 發(fā)布到packagist
你需要執(zhí)行額外一步確保模塊安裝到 Modules 目錄下
安裝 joshbrw/laravel-module-installer 插件忧设,它會將文件自動移動到 Modules 目錄
九谨垃、發(fā)布模塊資源文件
模塊可以像其他包一樣發(fā)布文件(創(chuàng)建模塊時不能使用 -plain 標志)
發(fā)布配置:
發(fā)布視圖:
核心部分是loadViewsFrom方法的調(diào)用
發(fā)布語言包:
如果你想使用laravel工廠,你必須在你的服務提供商中添加以下內(nèi)容:
十硼控、模塊命令行指令
回顧一下創(chuàng)建模塊命令:
php artisan module:make-command CreatePostCommand Blog
您可以使用commands為laravel方法注冊命令刘陶,該方法在服務提供者類中可用。
十一牢撼、模塊事件
回顧一下創(chuàng)建模塊事件和監(jiān)聽器:
php artisan module:make-event BlogPostWasUpdated Blog
php artisan module:make-listener NotifyAdminOfNewPost Blog
之后需要在laravel中注冊他們匙隔,有兩種辦法:
- 手動在模塊的服務提供者中調(diào)用
$this->app['events']->listen(BlogPostWasUpdated::class, NotifyAdminOfNewPost::class); - 在app/命名空間下為模塊創(chuàng)建一個事件服務提供者(EventServiceProvider)包含他的所有事件
不要忘記加載此服務提供者,將其添加到module.json文件中熏版。