แอปพลิเคชันมากตัว

บางครั้งโปรเจกต์หนึ่งอาจถูกแบ่งเป็นโปรเจกต์ย่อยหลายๆ โปรเจกต์ เช่น ร้านค้าออนไลน์อาจถูกแบ่งเป็นโปรเจกต์ย่อย ๆ 3 ประการคือ โปรเจกต์หลักของร้านค้า อินเทอร์เฟซ API ของร้านค้า และภายในร้านค้า เขาใช้ออกแบบดาต้าเบสเดียวกัน

webman ช่วยให้คุณสามารถวางแผน app directory ในแบบนี้:

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

เมื่อเข้าถึงที่อยู่ http://127.0.0.1:8787/shop/{คอนโทรลเลอร์}/{เมธอด} เข้าถึงคอนโทรเลอร์และเมธอดในapp/shop/controller

เมื่อเข้าถึงที่อยู่ http://127.0.0.1:8787/api/{คอนโทรลเลอร์}/{เมธอด} เข้าถึงคอนโทรเลอร์และเมธอดใน app/api/controller

เมื่อเข้าถึงที่อยู่ http://127.0.0.1:8787/admin/{คอนโทรลเลอร์}/{เมธอด} เข้าถึงคอนโทรเลอร์และเมธอดในapp/admin/controller

ใน webman อาจตั้งกำหนด app directory แบบนี้ ด้วย:

app
├── controller
├── model
├── view

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

นั่นหมายความว่าเมื่อเข้าถึงที่อยู่ http://127.0.0.1:8787/{คอนโทรลเลอร์}/{เมธอด} จะเข้าถึงคอนโทรเลอร์และเมธอดในapp/controller เมื่อมี directory path ที่เริ่มต้นด้วย api หรือ admin จะเข้าถึงคอนโทรเลอร์และเมธอดใน directory ที่สอดคล้องกับ

เมื่อมีหลายๆแอปพลิเคชัน ชื่อ domain คลาสต้องปรับตาม psr4 เช่น app/api/controller/FooController.php จะมีรูปแบบต่อไปนี้:

<?php
namespace app\api\controller;

use support\Request;

class FooController
{

}

การกำหนด middleware ของแอปพลิเคชันหลายๆ

บางครั้งคุณอาจต้องการกำหนด middleware ที่แตกต่างกันสำหรับแอปพลิเคชันต่าง ๆ, เช่น api อาจต้องการmiddlware ที่เปิดใช้งาน cross-origin, admin อาจต้องการmiddlware ที่ตรวจสอบการเข้าสู่ระบบของผู้ดูแลระบบ, การกำหนด middleware ต่างๆ สำหรับแอปพลิเคชันอาจมีรูปแบบต่อไปนี้ใน config/midlleware.php:

return [
    // บนทั่วไป middleware
    '' => [
        support\middleware\AuthCheck::class,
    ],
    // middleware ของแอปพลิเคชัน api
    'api' => [
         support\middleware\AccessControl::class,
     ],
    // middleware ของแอปพลิเคชัน admin
    'admin' => [
         support\middleware\AdminAuthCheck::class,
         support\middleware\SomeOtherClass::class,
    ],
];

Middleware ที่กล่าวถึงอาจไม่มีอยู่จริง ข้อมูลในที่นี้เพียงแค่ตัวอย่างการอธิบายวิธีการกำหนด middleware สำหรับแต่ละแอปพลิเคชันเท่านั้น

ลำดับการทำงานของ middleware จะเป็น global middleware -> middleware ของแอปพลิเคชัน

ท่านสามารถศึกษาการพัธนา middleware ได้middleware บทที่

การกำหนดการจัดการข้อยกเว้นของแอปพลิเคชันหลายๆ

เช่นเดียวกับกับ middleware ท่านอาจต้องการกำหนดการจัดการข้อยกเว้นทั้งของแต่ละอะพลิเคชัน คุณอาจต้องการให้shop โปรแกรมเชิงอุปกรณ์แสดงข้อผิดพลาดที่เป็นมิตร; ขณะที่เมื่อโปรเจ็ค api มีข้อผิดพลาดที่ต้องการรับค่ากลับไม่ใช่หน้าเพจ แต่เป็นสตริง json. การกำหนดคลาสการจัดการข้อยกเว้นที่ต่างกันสำหรับแต่ละแอปพลิเคชันประมาณนี้config/exception.php:

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

ไม่เหมือนกับ middleware, แต่ละแอปพลิเคชันสามารถกำหนดคลาสการจัดการข้อยกเว้นได้เพียงหนึ่งโดยเท่านั้น

คลาสการจัดการข้อผิดพลาดที่กล่าวถึงอาจไม่มีอยู่จริง, ข้อมูลในที่นี้เพียงแค่ตัวอย่างการอธิบายวิธีการกำหนดการจัดการข้อผิดพลาดสำหรับแต่ละแอปพลิเคชันเท่านั้น

สำหรับการพัฒนาการจัดการข้อผิดพลาด คุณสามารถศึกษาเพิ่มเติมได้จาก บทเรื่องการจัดการข้อผิดพลาด