應(yīng)用模塊插件(社區(qū)版)

Webman Module 應(yīng)用模塊插件(社區(qū)版)
基于
Webman
的一款應(yīng)用模塊插件,與普通插件的主要區(qū)別在于它是一款面向生產(chǎn)環(huán)境下的應(yīng)用級(jí)解決方案,例如問答、博客、新聞等應(yīng)用程序
介紹
ifui/webman-module
是一個(gè) webman
插件,它可以使用模塊化、搭積木的方式來管理你的應(yīng)用程序。
一個(gè)模塊就像是一個(gè)應(yīng)用,該插件嚴(yán)格參照官方的 應(yīng)用插件說明 規(guī)范開發(fā)。
相比于普通插件的一大好處是內(nèi)置支持了 測(cè)試
功能,可以方便快捷的測(cè)試應(yīng)用程序在實(shí)際應(yīng)用場(chǎng)景下的情況。
安裝
composer require ifui/webman-module ^1.0.5
版本升級(jí)
# 升級(jí)配置文件
php webman plugin:install ifui/webman-module
快速上手
1.創(chuàng)建模塊
執(zhí)行:php webman module:create
模塊名應(yīng)遵循PSR4
規(guī)范,這里不作過多限制
按照操作提示輸入相應(yīng)的內(nèi)容即可,將會(huì)創(chuàng)建如下目錄格式
/plugin/
├── apple/
├── app/
├── controller/
├── Index.php
├── middleware/
├── model/
├── providers/
├── AppServerProvider.php
├── view/
├── functions.php
├── config/
├── app.php
├── database/
├── migrations/
├── seeds/
├── route
├── admin.php
├── api.php
├── web.php
├── tests/
├── composer.json
├── module.json
├── README.md
├── LICENSE.md
2. 啟動(dòng) webman
服務(wù),并訪問默認(rèn)的應(yīng)用模塊URL
- 啟動(dòng)
webman
服務(wù)
php start.php start
- 使用瀏覽器訪問
/app/apple/index
(其中apple
是你新建的模塊名) - 看到: hello webman module 問候提示語則表示插件已成功運(yùn)行
接下來和開發(fā)一個(gè)webman
項(xiàng)目體驗(yàn)基本一致
配置說明
模塊的配置文件都在模塊根目錄下的 module.json
文件內(nèi)
{
"name": "apple", // 應(yīng)用模塊名
"activity": true, // 是否啟動(dòng)該模塊
"author": "ifui", // 作者名
"email": "", // 郵箱地址
"homepage": "", // 模塊主頁地址
"type": "", // 模塊類型
"version": "0.1.0", // 模塊版本號(hào)
"description": "", // 模塊簡(jiǎn)介
"keywords": [], // 模塊關(guān)鍵詞
"route": {
"autoRoute": true, // 是否開啟自動(dòng)路由
"urlPrefix": "/app/apple" // 路由前綴
}
}
命令介紹
模塊命令
1. 啟動(dòng)模塊 module:start
php webman module:start apple
2. 暫停模塊 module:stop
php webman module:stop apple
3. 查看模塊列表 module:list
php webman module:list
4. 創(chuàng)建一個(gè)模塊 module:create
php webman module:create
常用命令
其中
--module
亦可以不填,系統(tǒng)會(huì)提示選擇對(duì)應(yīng)的模塊,輸入對(duì)應(yīng)的序號(hào)即可
1. 創(chuàng)建一個(gè)模型文件 module:make-model
php webman module:make-model Post --module=apple
將會(huì)創(chuàng)建 /plugin/apple/app/model/Post.php
文件
2. 創(chuàng)建一個(gè)控制器文件 module:make-controller
php webman module:make-controller Admin/Post --module=apple
將會(huì)創(chuàng)建 /plugin/apple/app/controller/Admin/Post.php
文件
3. 創(chuàng)建一個(gè)中間件文件 make-middleware
php webman module:make-middleware LimitVisitMiddleware --module=apple
將會(huì)創(chuàng)建 /plugin/apple/app/middleware/LimitVisitMiddleware.php
文件
4. 創(chuàng)建一個(gè)測(cè)試文件 module:make-test
php webman module:make-test unit/AppleTest --module=apple
將會(huì)創(chuàng)建 /plugin/apple/tests/unit/AppleTest.php
文件
數(shù)據(jù)庫(kù)遷移命令
主要使用了數(shù)據(jù)庫(kù)遷移工具 Phinx
,
Phinx
項(xiàng)目地址:https://github.com/cakephp/phinx
官方中文文檔地址:https://tsy12321.gitbooks.io/phinx-doc/content/
使用數(shù)據(jù)庫(kù)遷移命令前,請(qǐng)確保webman
根目錄下的 config/plugin/ifui/webman-module/phink.php
配置是否正確
<?php
return [
"paths" => [
"migrations" => "database/migrations",
"seeds" => "database/seeds"
],
"environments" => [
"default_migration_table" => "phinxlog",
"default_database" => "dev",
"default_environment" => "dev",
"dev" => [
"adapter" => "DB_CONNECTION", // 修改此處 e.g. env('DB_CONNECTION')
"host" => "DB_HOST", // 修改此處
"name" => "DB_DATABASE", // 修改此處
"user" => "DB_USERNAME", // 修改此處
"pass" => "DB_PASSWORD", // 修改此處
"port" => "DB_PORT", // 修改此處
"charset" => "utf8"
]
]
];
1. 創(chuàng)建一個(gè)遷移腳本 module:phink-create
遷移腳本命名應(yīng)該保持 駝峰命名法
php webman module:phink-create CreatePost --module=apple
將會(huì)創(chuàng)建 /plugin/apple/database/migrations/20220818084023_create_post.php
2. 執(zhí)行遷移腳本 module:phink-migrate
Migrate 命令默認(rèn)運(yùn)行執(zhí)行所有腳本,可選指定環(huán)境 -e
,比如 -e dev
可以使用 --target
或者 -t
來指定執(zhí)行某個(gè)遷移腳本
php webman module:phink-migrate --module=apple
3. 回滾之前的遷移腳本 module:phink-rollback
php webman module:phink-rollback --module=apple
指定回滾環(huán)境 -e dev
php webman module:phink-rollback --module=apple -e dev
使用 --target
或者 -t
回滾指定版本遷移腳本,指定版本如果設(shè)置為0則回滾所有腳本
php webman module:phink-rollback --module=apple -t 20120103083322
可以使用 --date
或者 -d
參數(shù)回滾指定日期的腳本
php webman module:phink-rollback --module=apple -d 2022
php webman module:phink-rollback --module=apple -d 202208
php webman module:phink-rollback --module=apple -d 20220816
4. 創(chuàng)建數(shù)據(jù)填充文件 module:phink-seed-create
命名格式使用駝峰法
php webman module:phink-seed-create PostSeeder --module=apple
將會(huì)創(chuàng)建 plugin/apple/database/seeds/PostSeeder.php
文件
5. 執(zhí)行數(shù)據(jù)填充命令 module:phink-seed-run
默認(rèn) module:phink-seed-run
命令會(huì)執(zhí)行所有 seed
php webman module:phink-seed-run --module=apple
如果你想要指定執(zhí)行一個(gè),只要增加 -s
參數(shù)后接 seed
的名字
php webman module:phink-seed-run --module=apple -s PostSeeder
使用說明
創(chuàng)建一個(gè)路由
在 route
文件夾下可以看到內(nèi)置了 admin.php
api.php
web.php
只要是在 route
文件夾下的 php
文件都會(huì)被執(zhí)行
這里需要注意的是 module.json
中的 urlPrefix
參數(shù)將會(huì)影響這里,當(dāng) urlPrefix
為空時(shí)會(huì)影響全局路由。
比如在 /plugin/apple/route/api.php
<?php
/*
|--------------------------------------------------------------------------
| API Routes
|--------------------------------------------------------------------------
*/
use Webman\Route;
Route::get('/hello', function () {
return response(config('plugin.apple.app.name'));
});
這時(shí)使用瀏覽器訪問 /app/apple/hello
即可
使用配置
插件的配置與普通 webman
項(xiàng)目一樣,不過插件的配置一般只對(duì)當(dāng)前插件有效,對(duì)主項(xiàng)目一般無影響。
使用方式:config('plugin.apple.app.name')
,其中 apple
為模塊名,app
為 配置文件名
其他注意事項(xiàng)請(qǐng)參考官方文檔:http://www.wtbis.cn/doc/webman/plugin/app.html#配置文件
模塊插件安裝與卸載
應(yīng)用插件安裝時(shí)只需要將插件目錄拷貝到{主項(xiàng)目}/plugin
目錄下即可,需要reload
或restart
才能生效。
卸載時(shí)直接刪除{主項(xiàng)目}/plugin
下對(duì)應(yīng)的插件目錄即可。
如何在插件內(nèi)部安裝 composer
拓展包
需要
ifui/webman-module
版本 >= 1.0.3
插件從 1.0.3
版本開始已經(jīng)內(nèi)置該功能,只需要在應(yīng)用模塊根目錄下執(zhí)行 composer
相關(guān)命令
插件將自動(dòng)引入應(yīng)用模塊下的拓展包文件
其他說明
該項(xiàng)目將緊隨 webman
的更新而更新,歡迎大家提 PR
有問題請(qǐng)聯(lián)系郵箱: ifui@foxmail.com