目錄結(jié)構(gòu)
plugin/
└── foo
├── 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
└── api
我們看到一個(gè)應(yīng)用插件有著與webman相同的目錄結(jié)構(gòu)及配置文件,實(shí)際上開發(fā)體驗(yàn)與開發(fā)webman普通應(yīng)用基本沒有區(qū)別
插件目錄及命名遵循PSR4規(guī)范,因?yàn)椴寮挤胖糜趐lugin目錄下,所以命名空間都以plugin開頭,例如plugin\foo\app\controller\UserController
。
關(guān)于 api 目錄
每個(gè)插件里有一個(gè)api目錄,如果你的應(yīng)用提供了一些內(nèi)部接口給其它應(yīng)用調(diào)用,需要將接口放在api目錄。
注意,這里所說的接口是函數(shù)調(diào)用的接口,非網(wǎng)絡(luò)調(diào)用的接口。
例如郵件插件
在 plugin/email/api/Email.php
提供了一個(gè)Email::send()
接口,用于給其它應(yīng)用調(diào)用發(fā)郵件。
另外 plugin/email/api/Install.php 是自動(dòng)生成的,用來讓webman-admin插件市場調(diào)用執(zhí)行安裝或卸載操作。