একাধিক অ্যাপ্লিকেশন

কখনও কখনও একটি প্রকল্প একাধিক উপ-প্রকল্পে বিভক্ত হতে পারে, উদাহরণস্বরূপ একটি মল হতে পারে মূল মল প্রকল্প, মল API ইন্টারফেস এবং মল পরিচালনা ব্যাকএন্ড - তিনটি উপ-প্রকল্পে বিভক্ত। এগুলি সকলেই একই ডাটাবেস কনফিগারেশন ব্যবহার করে।

webman আপনাকে নিম্নোক্ত উপায়ে app ডিরেক্টরি সংগঠিত করতে দেয়:

app
├── shop
│   ├── controller
│   ├── model
│   └── view
├── api
│   ├── controller
│   └── model
└── admin
    ├── controller
    ├── model
    └── view

http://127.0.0.1:8787/shop/{controller}/{method} ঠিকানায় অ্যাক্সেস করলে app/shop/controller-এর কন্ট্রোলার এবং মেথড অ্যাক্সেস করা হয়।

http://127.0.0.1:8787/api/{controller}/{method} ঠিকানায় অ্যাক্সেস করলে app/api/controller-এর কন্ট্রোলার এবং মেথড অ্যাক্সেস করা হয়।

http://127.0.0.1:8787/admin/{controller}/{method} ঠিকানায় অ্যাক্সেস করলে app/admin/controller-এর কন্ট্রোলার এবং মেথড অ্যাক্সেস করা হয়।

webman-এ, app-এর প্রতিটি ডিরেক্টরি একটি অ্যাপ্লিকেশন হিসেবে বিবেচিত হতে পারে।

webman-এ, আপনি নিম্নোক্ত উপায়েও app ডিরেক্টরি সংগঠিত করতে পারেন:

app
├── controller
├── model
├── view
│
├── api
│   ├── controller
│   └── model
└── admin
    ├── controller
    ├── model
    └── view

এভাবে http://127.0.0.1:8787/{controller}/{method} ঠিকানায় অ্যাক্সেস করলে app/controller-এর কন্ট্রোলার এবং মেথড অ্যাক্সেস করা হয়। পাথ api বা admin দিয়ে শুরু হলে সংশ্লিষ্ট ডিরেক্টরির কন্ট্রোলার এবং মেথড অ্যাক্সেস করা হয়।

একাধিক অ্যাপ্লিকেশনে ক্লাসের নামস্থান psr4-এর সাথে সামঞ্জস্যপূর্ণ হতে হবে, উদাহরণস্বরূপ app/api/controller/FooController.php ফাইলটি নিম্নরূপ:

<?php
namespace app\api\controller;

use support\Request;

class FooController
{

}

একাধিক অ্যাপ্লিকেশনের মিডলওয়্যার কনফিগারেশন

কখনও কখনও আপনি বিভিন্ন অ্যাপ্লিকেশনের জন্য বিভিন্ন মিডলওয়্যার কনফিগার করতে চাইতে পারেন, উদাহরণস্বরূপ api অ্যাপ্লিকেশনে ক্রস-অরিজিন মিডলওয়্যার প্রয়োজন হতে পারে, admin-এর জন্য অ্যাডমিন লগইন চেক করার মিডলওয়্যার প্রয়োজন। config/middleware.php-এর কনফিগারেশন নিম্নরূপ হতে পারে:

return [
    // গ্লোবাল মিডলওয়্যার
    '' => [
        support\middleware\AuthCheck::class,
    ],
    // api অ্যাপ্লিকেশনের মিডলওয়্যার
    'api' => [
         support\middleware\AccessControl::class,
     ],
    // admin অ্যাপ্লিকেশনের মিডলওয়্যার
    'admin' => [
         support\middleware\AdminAuthCheck::class,
         support\middleware\SomeOtherClass::class,
    ],
];

উপরের মিডলওয়্যারগুলি বিদ্যমান নাও থাকতে পারে, এখানে শুধুমাত্র অ্যাপ্লিকেশন অনুযায়ী মিডলওয়্যার কনফিগার করার উদাহরণ দেওয়া হয়েছে।

মিডলওয়্যার কার্যকর হওয়ার ক্রম হল গ্লোবাল মিডলওয়্যার->অ্যাপ্লিকেশন মিডলওয়্যার

মিডলওয়্যার বিকাশের জন্য মিডলওয়্যার অধ্যায় 참조 করুন।

একাধিক অ্যাপ্লিকেশনের এক্সেপশন হ্যান্ডলিং কনফিগারেশন

একইভাবে, আপনি বিভিন্ন অ্যাপ্লিকেশনের জন্য বিভিন্ন এক্সেপশন হ্যান্ডলার ক্লাস কনফিগার করতে চাইতে পারেন, উদাহরণস্বরূপ shop অ্যাপ্লিকেশনে এক্সেপশন হলে আপনি একটি বন্ধুত্বপূর্ণ টিপ পেজ প্রদান করতে চাইতে পারেন; api অ্যাপ্লিকেশনে এক্সেপশন হলে আপনি পেজের পরিবর্তে JSON স্ট্রিং রিটার্ন করতে চাইতে পারেন। বিভিন্ন অ্যাপ্লিকেশনের জন্য বিভিন্ন এক্সেপশন হ্যান্ডলার ক্লাস কনফিগার করার জন্য config/exception.php ফাইল নিম্নরূপ:

return [
    'shop' => support\exception\Handler::class,
    'api' => support\exception\ApiHandler::class,
];

মিডলওয়্যারের সাথে ভিন্ন, প্রতিটি অ্যাপ্লিকেশনে শুধুমাত্র একটি এক্সেপশন হ্যান্ডলার ক্লাস কনফিগার করা যায়।

উপরের এক্সেপশন হ্যান্ডলার ক্লাসগুলি বিদ্যমান নাও থাকতে পারে, এখানে শুধুমাত্র অ্যাপ্লিকেশন অনুযায়ী এক্সেপশন হ্যান্ডলিং কনফিগার করার উদাহরণ দেওয়া হয়েছে।

এক্সেপশন হ্যান্ডলিং বিকাশের জন্য এক্সেপশন হ্যান্ডলিং অধ্যায় 참조 করুন।