Структура каталогов

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.
Имена каталогов и плагинов соответствуют стандарту 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.