Множественные приложения
Иногда проект может быть разделен на несколько подпроектов, например, магазин может быть разделен на основной проект магазина, 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,
];
В отличие от промежуточного программного обеспечения, каждое приложение может иметь только один обработчик исключений.
Указанные выше обработчики исключений могут быть недоступны, здесь приведен лишь пример настройки обработки исключений для различных приложений.
Разработка обработки исключений см. в разделе Обработка исключений