콘텐츠로 이동
getnextpdf.com

Enterprise 에디션

PHPStan — 심층 참조

  • 공개 클래스는 하나입니다. EditionBoundaryRuleuse 문에 대한 사용자 정의 PHPStan 규칙입니다.
  • 단방향 에디션 의존성 순서를 시행합니다. Core는 결코 Pro나 Enterprise를 임포트하지 않습니다. Pro는 결코 Enterprise를 임포트하지 않습니다.
  • 위반은 위반하는 use 줄에서 식별자 nextpdf.editionBoundaryViolation을 보고합니다.
  • 빌드 시점 전용입니다. 이 규칙은 런타임 경로가 없으며 생성되는 PDF에 아무런 영향을 미치지 않습니다.
  • nextpdf/enterprise에 포함되어 배포됩니다. 등록은 표준 PHPStan 구성을 사용합니다.

이 기능은 NextPDF Enterprise(nextpdf/enterprise)에 포함되어 배포되며 Enterprise 등급 라이선스 봉투로 활성화됩니다. 이는 런타임 경로가 없는 빌드 시점 정적 분석 규칙입니다. nextpdf/enterprise 패키지 경계가 이를 게이트하며, 별도의 기능별 기능 코드를 갖지 않습니다. Core와 Pro는 동등한 것을 제공하지 않습니다. 에디션 비교 및 라이선스 받기.

패키지를 설치한 다음, PHPStan 구성에 규칙을 등록하십시오.

Terminal window
composer require nextpdf/enterprise:^3
rules:
- NextPDF\Enterprise\PHPStan\EditionBoundaryRule
심볼매개변수기본 동작반환값던지거나 실패하는 경우비고
EditionBoundaryRule없음 (생성자 인자 없음)use 문에 구독하는 무상태 PHPStan 규칙결코 던지지 않음final; Use_에 대한 PHPStan\Rules\Rule 구현
EditionBoundaryRule::getNodeType()없음규칙이 구독하는 AST 노드 유형을 선언string (Use_::class)결코 던지지 않음표준 PHPStan Rule 계약 메서드
EditionBoundaryRule::processNode()Node $node, Scope $scope임포트된 각 심볼을 분석 대상 네임스페이스에 대해 금지된 접두사와 대조list<IdentifierRuleError> (준수 시 비어 있음)결코 던지지 않음; 위반은 규칙 오류로 표면화오류 식별자 nextpdf.editionBoundaryViolation
final class EditionBoundaryRule implements Rule
{
public function getNodeType(): string;
public function processNode(Node $node, Scope $scope): array;
}

EditionBoundaryRuleUse_ 노드 유형에 대해 표준 PHPStan Rule 계약을 구현합니다. 각 use 문에 대해 분석 대상 파일의 네임스페이스를 임포트된 모든 심볼의 네임스페이스 접두사와 비교하고 단방향 의존성 순서를 시행합니다.

분석 대상 네임스페이스에디션 레이블금지된 임포트 접두사
NextPDF\* 하위 네임스페이스, Pro 및 Enterprise 제외CoreNextPDF\Pro\, NextPDF\Enterprise\
NextPDF\ProNextPDF\Pro\*ProNextPDF\Enterprise\
NextPDF\EnterpriseNextPDF\Enterprise\*Enterprise없음 (최상위 등급)
NextPDF\ 밖의 모든 네임스페이스없음 (제약 없음)

임포트가 경계를 넘으면, 규칙은 위반하는 use 문 줄에 고정하여 식별자 nextpdf.editionBoundaryViolation 아래에 오류를 보고합니다. 메시지는 임포트된 심볼, 임포트하는 네임스페이스, 금지된 접두사, 그리고 사람이 읽을 수 있는 에디션 레이블을 명시합니다. 임포트된 각 심볼은 최대 하나의 오류를 생성합니다. 접두사 대조는 일치하는 첫 번째 금지 접두사에서 멈춥니다.

이 검사는 정적이며 권고적입니다. 임포트 문에서 경계 위반을 보고합니다. 분석 대상 프로그램이 그 밖의 면에서 올바름을 증명하지는 않습니다.

  • NextPDF\ 밖의 네임스페이스와 네임스페이스 없는 파일은 오류를 생성하지 않습니다. 규칙은 빈 리스트를 반환합니다.
  • 정확히 루트 네임스페이스 NextPDF(하위 네임스페이스 세그먼트 없음)에 선언된 코드는 제약되지 않습니다. 경계 감지는 NextPDF\ 하위 네임스페이스에 대해 일치합니다.
  • Enterprise 파일은 Pro나 Core 심볼을 임포트한다는 이유로 결코 플래그되지 않습니다(최상위 등급, 설계상).
  • 접두사 대조는 구분자를 인식합니다. NextPDF\Professional 같은 네임스페이스는 Pro가 아니라 Core로 분류되며, 그 아래의 임포트는 NextPDF\Pro\ 접두사에 대해 결코 오탐하지 않습니다.
  • 이후 세그먼트 없이 리터럴 이름 NextPDF\ProNextPDF\Enterprise를 임포트하는 것은 플래그되지 않습니다. 그 접두사 아래의 심볼만 일치합니다.
  • 규칙은 임포트 종류로 필터링하지 않습니다. 금지된 접두사 아래의 클래스, function, const 임포트는 모두 보고됩니다.
  • use 문 없이 작성된 인라인 완전 정규화 참조는 범위 밖입니다. 경계가 시행되도록 임포트를 선호하십시오.
  • 그룹 use 선언은 별개의 GroupUse 노드 유형으로 파싱되어 규칙의 Use_ 구독 밖에 있습니다. 심볼별 일반 임포트는 경계 검사를 유지합니다.
  • processNode()는 결코 던지지 않습니다. 모든 결과는 PHPStan 규칙 오류나 빈 결과로 표면화됩니다.
  • 런타임 컴포넌트가 아닙니다. 어떠한 암호화 연산도 수행하지 않으며 FIPS 모드는 적용되지 않습니다.

어떠한 표준 적합성도 주장되지 않습니다. 이는 다운스트림 빌드에서 내부 아키텍처 제약(에디션 계층화)을 시행하는 개발자 도구 규칙입니다. 이는 PHPStan 규칙 확장 계약을 구현하며, 이는 형식 표준이 아니라 서드파티 도구 API입니다. 이 규칙은 분석 대상 코드에 대해 어떠한 준수, 인증, 올바름 보장도 하지 않습니다. 에디션 경계 임포트 위반만 보고하며 권고적입니다.

  • 규칙은 분석 중 PHPStan 내부에서 실행되며, 소스 구조만 읽고, 생성되는 PDF나 배포된 어떠한 서비스에도 영향을 미치지 않습니다.
  • 규칙을 등록하고 PHPStan 레벨을 선택하는 것은 통합자의 책임으로 남습니다.
  • 클래스는 final이며 무상태이므로, PHPStan의 병렬 분석 워커 하에서 안전합니다.
  • 분석 출력은 주어진 소스 트리에 대해 결정적입니다. 동일한 입력은 동일한 오류 리스트를 산출합니다.
  • nextpdf/enterprise 2.1.0 이후 사용 가능합니다. 위의 계약은 3.1.0을 반영합니다.

이 페이지는 외부에서 관찰 가능한 동작과 지원되는 공개 API 표면만을 문서화합니다. 내부 네임스페이스 경로, 헬퍼 클래스, 메커니즘 테이블, 런북 파일명, 티켓 접두사는 범위 밖입니다.