Cấu trúc thư mục

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

Chúng ta thấy rằng một plugin ứng dụng có cấu trúc thư mục và các tệp cấu hình giống như webman, thực tế trải nghiệm phát triển không khác gì so với phát triển ứng dụng webman thông thường.
Thư mục và tên gọi của plugin tuân theo quy tắc PSR4, vì tất cả các plugin đều được đặt trong thư mục plugin, nên không gian tên đều bắt đầu bằng plugin, ví dụ như plugin\foo\app\controller\UserController.

Về thư mục api

Mỗi plugin có một thư mục api, nếu ứng dụng của bạn cung cấp một số dịch vụ nội bộ cho các ứng dụng khác gọi, cần phải đặt các dịch vụ trong thư mục api.
Lưu ý, các dịch vụ ở đây là dịch vụ gọi hàm, không phải là dịch vụ gọi mạng.
Ví dụ, plugin/email/api/Email.php cung cấp một dịch vụ Email::send() cho các ứng dụng khác gọi để gửi email.
Ngoài ra, plugin/email/api/Install.php là tệp tự động sinh, dùng để cho thị trường plugin webman-admin gọi thực hiện cài đặt hoặc gỡ bỏ.