다중 애플리케이션
때때로 하나의 프로젝트는 여러 개의 하위 프로젝트로 나눌 수 있습니다. 예를 들어, 하나의 쇼핑몰 프로젝트는 쇼핑몰 메인 프로젝트, 쇼핑몰 API 인터페이스, 쇼핑몰 관리 백엔드의 3개 하위 프로젝트로 나눌 수 있으며, 이들은 모두 동일한 데이터베이스 구성을 사용합니다.
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
애플리케이션은 CORS 미들웨어가 필요할 수 있고, 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,
];
미들웨어와는 달리 각 애플리케이션은 단 하나의 예외 처리 클래스만 구성할 수 있습니다.
위의 예외 처리 클래스는 실제로 존재하지 않을 수 있으며, 여기서는 애플리케이션별로 예외 처리를 구성하는 방법을 설명하기 위한 예시입니다.
예외 처리 개발에 대한 참고 사항은 예외 처리 장을 참조하십시오.