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 প্লাগইন মার্কেটে কল করে ইনস্টল বা আনইনস্টল অপারেশন পালন করার জন্য।