Множественные приложения

Иногда проект может быть разделен на несколько подпроектов, например, магазин может быть разделен на основной проект магазина, API-интерфейс магазина и административный интерфейс магазина, и все они используют одинаковую конфигурацию базы данных.

webman позволяет вам организовать каталоги приложений следующим образом:

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
├── controller
├── model
├── view
│
├── api
│   ├── controller
│   └── model
└── admin
    ├── controller
    ├── model
    └── view

Таким образом, когда вы обращаетесь по адресу http://127.0.0.1:8787/{контроллер}/{метод}, вы обращаетесь к контроллеру и методу в 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,
];

В отличие от промежуточного программного обеспечения, каждое приложение может иметь только один обработчик исключений.

Указанные выше обработчики исключений могут быть недоступны, здесь приведен лишь пример настройки обработки исключений для различных приложений.

Разработка обработки исключений см. в разделе Обработка исключений