国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

應(yīng)用插件

每個應(yīng)用插件是一個完整的應(yīng)用,源碼放置于{主項(xiàng)目}/plugin目錄下

提示
使用命令php webman app-plugin:create {插件名} 可以在本地創(chuàng)建一個應(yīng)用插件,
例如 php webman app-plugin:create cms 將創(chuàng)建如下目錄結(jié)構(gòu)

plugin/
└── cms
    ├── app
    │?? ├── controller
    │?? │?? └── IndexController.php
    │?? ├── exception
    │?? │?? └── Handler.php
    │?? ├── functions.php
    │?? ├── middleware
    │?? ├── model
    │?? └── view
    │??     └── index
    │??         └── index.html
    ├── config
    │?? ├── app.php
    │?? ├── autoload.php
    │?? ├── container.php
    │?? ├── database.php
    │?? ├── exception.php
    │?? ├── log.php
    │?? ├── middleware.php
    │?? ├── process.php
    │?? ├── redis.php
    │?? ├── route.php
    │?? ├── static.php
    │?? ├── thinkorm.php
    │?? ├── translation.php
    │?? └── view.php
    └── public

我們看到一個應(yīng)用插件有著與webman相同的目錄結(jié)構(gòu)及配置文件。實(shí)際上開發(fā)一個應(yīng)用插件與開發(fā)一個webman項(xiàng)目體驗(yàn)基本一致,只需要注意以下幾個方面。

命名空間

插件目錄及命名遵循PSR4規(guī)范,因?yàn)椴寮挤胖糜趐lugin目錄下,所以命名空間都以plugin開頭,例如plugin\cms\app\controller\UserController,這里cms是插件的源碼主目錄。

url訪問

應(yīng)用插件url地址路徑都以/app開頭,例如plugin\cms\app\controller\UserControllerurl地址是 http://127.0.0.1:8787/app/cms/user。

靜態(tài)文件

靜態(tài)文件放置于plugin/{插件}/public下,例如訪問http://127.0.0.1:8787/app/cms/avatar.png實(shí)際上是獲取plugin/cms/public/avatar.png文件。

配置文件

插件的配置與普通webman項(xiàng)目一樣,不過插件的配置一般只對當(dāng)前插件有效,對主項(xiàng)目一般無影響。
例如plugin.cms.app.controller_suffix的值只影響插件的控制器后綴,對主項(xiàng)目沒有影響。
例如plugin.cms.app.controller_reuse的值只影響插件是否復(fù)用控制器,對主項(xiàng)目沒有影響。
例如plugin.cms.middleware的值只影響插件的中間件,對主項(xiàng)目沒有影響。
例如plugin.cms.view的值只影響插件所使用的視圖,對主項(xiàng)目沒有影響。
例如plugin.cms.container的值只影響插件所使用的容器,對主項(xiàng)目沒有影響。
例如plugin.cms.exception的值只影響插件的異常處理類,對主項(xiàng)目沒有影響。

但是因?yàn)槁酚墒侨值模圆寮渲玫穆酚梢彩怯绊懭值摹?/p>

獲取配置

獲取某個插件配置方法為 config('plugin.{插件}.{具體的配置}');,例如獲取plugin/cms/config/app.php的所有配置方法為config('plugin.cms.app')
同樣的,主項(xiàng)目或者其它插件都可以用config('plugin.cms.xxx')來獲取cms插件的配置。

不支持的配置

應(yīng)用插件不支持server.php,session.php配置,不支持app.request_class,app.public_pathapp.runtime_path配置。

數(shù)據(jù)庫

插件可以配置自己的數(shù)據(jù)庫,例如plugin/cms/config/database.php內(nèi)容如下

return  [
    'default' => 'mysql',
    'connections' => [
        'mysql' => [ // mysql為連接名
            'driver'      => 'mysql',
            'host'        => '127.0.0.1',
            'port'        => 3306,
            'database'    => '數(shù)據(jù)庫',
            'username'    => '用戶名',
            'password'    => '密碼',
            'charset'     => 'utf8mb4',
            'collation'   => 'utf8mb4_general_ci',
        ],
        'admin' => [ // admin為連接名
            'driver'      => 'mysql',
            'host'        => '127.0.0.1',
            'port'        => 3306,
            'database'    => '數(shù)據(jù)庫',
            'username'    => '用戶名',
            'password'    => '密碼',
            'charset'     => 'utf8mb4',
            'collation'   => 'utf8mb4_general_ci',
        ],
    ],
];

引用方式為Db::connection('plugin.{插件}.{連接名}');,例如

use support\Db;
Db::connection('plugin.cms.mysql')->table('user')->first();
Db::connection('plugin.cms.admin')->table('admin')->first();

如果想使用主項(xiàng)目的數(shù)據(jù)庫,則直接使用即可,例如

use support\Db;
Db::table('user')->first();
// 假設(shè)主項(xiàng)目還配置了一個admin連接
Db::connection('admin')->table('admin')->first();

提示
thinkorm也是類似的用法

Redis

Redis用法與數(shù)據(jù)庫類似,例如 plugin/cms/config/redis.php

return [
    'default' => [
        'host' => '127.0.0.1',
        'password' => null,
        'port' => 6379,
        'database' => 0,
    ],
    'cache' => [
        'host' => '127.0.0.1',
        'password' => null,
        'port' => 6379,
        'database' => 1,
    ],
];

使用時

use support\Redis;
Redis::connection('plugin.cms.default')->get('key');
Redis::connection('plugin.cms.cache')->get('key');

同樣的,如果想復(fù)用主項(xiàng)目的Redis配置

use support\Redis;
Redis::get('key');
// 假設(shè)主項(xiàng)目還配置了一個cache連接
Redis::connection('cache')->get('key');

日志

日志類用法也與數(shù)據(jù)庫用法類似

use support\Log;
Log::channel('plugin.admin.default')->info('test');

如果想復(fù)用主項(xiàng)目的日志配置,直接使用

use support\Log;
Log::info('日志內(nèi)容');
// 假設(shè)主項(xiàng)目有個test日志配置
Log::channel('test')->info('日志內(nèi)容');

應(yīng)用插件安裝與卸載

應(yīng)用插件安裝時只需要將插件目錄拷貝到{主項(xiàng)目}/plugin目錄下即可,需要reload或restart才能生效。
卸載時直接刪除{主項(xiàng)目}/plugin下對應(yīng)的插件目錄即可。

編輯于2025-02-06 21:20:07 完善本頁 +發(fā)起討論
贊助商