目錄結構

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

我們看到一個應用插件有著與 webman 相同的目錄結構及配置文件,實際上開發體驗與開發 webman 普通應用基本沒有區別。
插件目錄及命名遵循 PSR4 規範,因為插件都放置於 plugin 目錄下,所以命名空間都以 plugin 開頭,例如 plugin\foo\app\controller\UserController

關於 api 目錄

每個插件裏有一個 api 目錄,如果你的應用提供了一些內部接口給其他應用調用,需要將接口放在 api 目錄。
注意,這裏所說的接口是函數調用的接口,非網絡調用的接口。
例如 郵件插件plugin/email/api/Email.php 提供了一個 Email::send() 接口,用於給其他應用調用發郵件。
另外 plugin/email/api/Install.php 是自動生成的,用來讓 webman-admin 插件市場調用執行安裝或卸載操作。