콘텐츠로 이동
getnextpdf.com

Enterprise 에디션

PHPStan

NextPDF Enterprise는 Core → Pro → Enterprise 에디션 경계를 넘는 use 임포트를 플래그하는 사용자 정의 PHPStan 규칙 EditionBoundaryRule을 제공합니다. 위반을 보고하는 개발자 대상 정적 검사입니다. 임포트 문을 분석하며 코드의 정확성을 보장하지 않습니다.

이 기능은 NextPDF Enterprise(nextpdf/enterprise)에 제공되며 Enterprise 등급 라이선스 엔벨로프로 활성화됩니다. PHPStan 구성을 통해 등록되는 빌드 시 PHPStan 규칙이므로 정적 분석 중에 실행되며 런타임 경로가 없습니다. 라이선스 게이트는 nextpdf/enterprise 패키지 경계이며 별도의 기능별 기능 코드가 없습니다. 에디션 비교 및 라이선스 받기.

Terminal window
composer require nextpdf/enterprise:^3

PHPStan 구성에 규칙을 등록하십시오.

rules:
- NextPDF\Enterprise\PHPStan\EditionBoundaryRule

이 규칙은 각 use 문을 검사하고 임포트하는 네임스페이스를 임포트되는 심볼의 네임스페이스 접두사와 비교합니다. 단방향 의존성 순서를 강제합니다.

  • Core 코드(NextPDF\, Pro 및 Enterprise 하위 네임스페이스 제외)는 NextPDF\Pro\* 또는 NextPDF\Enterprise\*에서 임포트해서는 안 됩니다.
  • Pro 코드(NextPDF\Pro\*)는 NextPDF\Enterprise\*에서 임포트해서는 안 됩니다.
  • Enterprise 코드(NextPDF\Enterprise\*)는 최상위 등급이며 그중 어느 것에서든 임포트할 수 있습니다.

임포트가 경계를 넘으면, 규칙은 식별자 nextpdf.editionBoundaryViolation과 함께 임포트하는 네임스페이스, 금지된 접두사, 사람이 읽을 수 있는 에디션 레이블을 명시하는 메시지로 오류를 보고합니다. 이 검사는 순수하게 정적입니다. 분석 시점에 임포트 그래프를 읽습니다.

이 규칙은 런타임이 아니라 분석 시점에 use 문을 추론합니다. 에디션 경계가 런타임 결정이 아니라 아키텍처 불변식이기 때문입니다. Core, Pro, Enterprise는 별도의 패키지로 제공되므로 하위 등급은 더 작은 설치본에 없는 심볼에 절대 의존해서는 안 됩니다. 경계를 넘는 임포트를 정적 분석 중에 잡아내면 실수가 출시되기 전에 빌드가 실패합니다. 대안은 더 나쁩니다. 같은 임포트가 나중에 Core 전용 배포에서 치명적인 클래스 누락 오류로 드러납니다. 순서는 의도적으로 단방향, Core → Pro → Enterprise이며, 오픈 코어 패키지가 서로의 위에 계층화되는 방식을 그대로 반영합니다. Enterprise는 최상위 등급이며 그 아래의 모든 에디션을 참조할 수 있으므로 제약을 받지 않습니다.

설계 배경: 오픈 코어, 락인 없음.

ClassResponsibility
EditionBoundaryRuleuse 문에 대한 PHPStan 규칙; 에디션 경계 위반을 보고함.

이 규칙은 Use_ 노드 타입에 대해 표준 PHPStan Rule 계약을 구현하며 nextpdf.editionBoundaryViolation 식별자 하에 오류를 방출합니다.

# phpstan.neon
includes:
- vendor/nextpdf/enterprise/phpstan.neon.dist
# phpstan.neon
rules:
- NextPDF\Enterprise\PHPStan\EditionBoundaryRule
parameters:
level: 9
paths:
- src

위반은 PHPStan 출력에 예를 들어 다음과 같이 나타납니다. Core 코드 내부의 Enterprise 임포트는 문제가 되는 use 줄에서 nextpdf.editionBoundaryViolation 하의 에디션 경계 위반으로 보고됩니다.

  • 이 규칙은 분석되는 파일의 네임스페이스와 임포트되는 심볼의 접두사에 대해 추론합니다. NextPDF\가 아닌 네임스페이스의 코드는 이 규칙으로 제약되지 않습니다.
  • Enterprise 네임스페이스는 설계상 제한되지 않습니다. 규칙은 Pro나 Core를 임포트한다는 이유로 Enterprise 파일을 절대 플래그하지 않습니다.
  • 이 규칙은 use 문을 분석합니다. use 없이 인라인으로 작성된 완전 정규화 클래스 참조는 이 규칙의 범위 밖입니다. 경계가 강제되도록 임포트를 선호하십시오.
  • 이 검사는 정적이며 권고적입니다. 경계 위반을 보고합니다. 프로그램이 그 외에 정확함을 증명하지는 않습니다.

이 규칙은 PHPStan 분석 중 use 문마다 실행되며 문자열 접두사 비교를 수행합니다. 그 오버헤드는 임포트 문 수에 비례하며 전체 분석 시간에 비해 무시할 만합니다.

이것은 정적 분석 규칙입니다. 빌드 시 PHPStan 내부에서 실행되고, 소스 구조만 읽으며, 생성된 PDF에 런타임 영향을 미치지 않습니다.

이 규칙은 분석 시점에 소스 코드를 처리하며 어떤 문서나 개인 데이터도 다루지 않습니다.

안전한 텔레메트리 및 로그 스크러빙

섹션 제목: “안전한 텔레메트리 및 로그 스크러빙”

규칙 출력은 PHPStan 진단입니다. 귀하 자신의 코드에서 비롯된 네임스페이스와 심볼 이름을 담습니다. 분석 로그를 소스와 동일한 주의를 기울여 취급하십시오.

어떤 표준 적합성도 주장하지 않습니다. 이것은 다운스트림 빌드에서 내부 아키텍처 제약(에디션 계층화)을 강제하는 개발자 도구 규칙입니다.

해당 없음. 규칙은 어떤 암호화 작업도 수행하지 않으며 런타임 경로가 없습니다.

런타임 구성 요소가 아닙니다. 규칙의 목적은 정적 분석 단계를 실패시킴으로써, 아키텍처 실수 — 에디션 경계 임포트 — 가 출시되기 전에 이를 잡아내는 것입니다.

  • 이 규칙은 각 use 문을 검사하고 단방향 의존성 순서를 강제합니다. Core는 Pro나 Enterprise를 임포트해서는 안 되고, Pro는 Enterprise를 임포트해서는 안 되며, Enterprise는 무엇이든 임포트할 수 있습니다.
  • 경계를 넘는 임포트는 임포트하는 네임스페이스와 금지된 접두사와 함께 nextpdf.editionBoundaryViolation 식별자 하에 보고됩니다.
  • NextPDF\가 아닌 네임스페이스의 코드는 이 규칙으로 제약되지 않습니다.
  • use 없는 완전 정규화 인라인 클래스 참조는 이 규칙의 범위 밖입니다. 경계가 강제되도록 임포트를 선호하십시오.

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

NextPDF Core는 에디션 경계 PHPStan 규칙을 제공하지 않습니다. 자체 빌드에서 에디션 계층화를 강제하려는 Core 전용 소비자는 동등한 규칙을 직접 작성하거나 조달해야 합니다.

NextPDF Pro는 에디션 경계 PHPStan 규칙을 제공하지 않습니다. 이는 nextpdf/enterprise 패키지의 일부일 뿐입니다. Pro 전용 배포에는 이 규칙을 등록할 Enterprise 구성 요소가 없습니다. Enterprise 표면은 Enterprise 개요를 참조하십시오.

내부 메커니즘 세부 사항은 소스 저장소의 내부 문서에 남아 있으며 이 매뉴얼의 범위 밖입니다.

이것은 빌드 시 정적 분석 규칙입니다. 분석 중 PHPStan 내부에서 실행되고, 소스 구조만 읽으며, 생성된 PDF나 배포된 서비스에 런타임 영향을 미치지 않습니다. 이를 등록하고 PHPStan 레벨을 선택하는 것은 통합 개발자의 책임입니다.

이 페이지는 개발자 도구 정적 분석 규칙을 설명합니다. 귀하의 코드에 대해 어떤 준수, 인증, 또는 정확성 보증도 하지 않습니다. 에디션 경계 임포트 위반만 보고하며 권고적입니다. 법률 자문을 구성하지 않습니다. 귀하의 빌드가 자체 아키텍처 또는 계약상 의무를 충족하는지 판단하는 것은 귀하의 책임입니다.