확장이 SP Kernel 미들웨어 그룹을 직접 조작하거나 라우트 파일에 미들웨어 FQCN 을 직접 부착하던 임시 방식을, 확장이 부착 대상(targets)을 명시 선언하고 코어가 요청 시점에 라우트명·URI 로 매칭해 실행하는 self-gate 로 정규화. 번들 7건(ecommerce/gdpr/pay 3종) 이전, audit 룰 3건·문서·버전 동기화 동반. 부수적으로 generate-skills.cjs 가 재생성 시 신의성실(부수의무) 섹션을 소실 시키던 회귀를 수정 — 스킬별 불릿을 스크립트 SSoT 로 편입해 재생성에도 보존.
35 lines
1.7 KiB
PHP
35 lines
1.7 KiB
PHP
<?php
|
|
|
|
namespace App\Contracts\Extension;
|
|
|
|
/**
|
|
* 확장 선언 미들웨어의 라우트 매칭 인덱스 계약.
|
|
*
|
|
* 활성 확장(모듈/플러그인)이 `getMiddleware()` 로 선언한 미들웨어를 수집해,
|
|
* 요청 시점에 라우트 이름·URI 를 각 선언의 `targets` 술어와 대조하여 매칭되는
|
|
* 미들웨어 FQCN 목록을 반환합니다. 코어 self-gate 게이트(`ExtensionMiddlewareGate`)가
|
|
* 이 계약을 사용해 그룹/timing 별로 매칭 미들웨어를 동적 실행합니다.
|
|
*
|
|
* 부팅 시점 라우트 순회로 확장 간 미들웨어를 부착할 수 없는 제약(확장 라우트는
|
|
* booted 지연 등록 + 순서 미보장)을 요청 시점 매칭으로 원천 회피합니다.
|
|
* IDV `IdentityPolicyRepository::getRouteScopeIndex()` 미러.
|
|
*
|
|
* @since 7.0.5
|
|
*/
|
|
interface ExtensionMiddlewareRegistryInterface
|
|
{
|
|
/**
|
|
* 현재 요청에 매칭되는 확장 미들웨어 FQCN 목록을 반환합니다.
|
|
*
|
|
* 게이트 래퍼가 자기 그룹·timing 을 전달하면, 그 축의 엔트리 중 라우트명 또는
|
|
* URI 술어가 매칭되는 것을 확장 로드 순서대로 반환합니다.
|
|
*
|
|
* @param string $routeName 현재 요청 라우트 이름 (무명 라우트면 빈 문자열)
|
|
* @param string $path 현재 요청 URI path (선행 슬래시 없음, 무명 라우트 타게팅용)
|
|
* @param string $group 요청이 속한 그룹 ('web'|'api')
|
|
* @param string $timing 실행 시점 ('before_core'|'after_core')
|
|
* @return array<int, class-string> 매칭된 확장 미들웨어 FQCN (선언 순서 = 확장 로드 순서)
|
|
*/
|
|
public function resolveForRoute(string $routeName, string $path, string $group, string $timing): array;
|
|
}
|