目錄結構

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插件市場調用執行安裝或卸載操作。