Enterprise Edition
PHPStan
Auf einen Blick
Abschnitt betitelt „Auf einen Blick“NextPDF Enterprise liefert eine benutzerdefinierte PHPStan-Regel, EditionBoundaryRule, die use-Imports markiert, welche die Editionsgrenze Core → Pro → Enterprise überschreiten. Es ist eine entwicklerseitige statische Prüfung, die Verletzungen meldet; sie analysiert Import-Anweisungen und garantiert nicht die Korrektheit Ihres Codes.
Verfügbarkeit & Lizenzierung
Abschnitt betitelt „Verfügbarkeit & Lizenzierung“Diese Fähigkeit wird in NextPDF Enterprise (nextpdf/enterprise) ausgeliefert und wird mit einer Lizenzhülle der Enterprise-Stufe aktiviert. Es handelt sich um eine PHPStan-Regel zur Build-Zeit, die über Ihre PHPStan-Konfiguration registriert wird; sie läuft also während der statischen Analyse und hat keinen Laufzeitpfad. Das Lizenz-Gate ist die Paketgrenze von nextpdf/enterprise, ohne separaten Capability-Code je Feature. Editionen vergleichen und eine Lizenz erwerben.
Installation
Abschnitt betitelt „Installation“composer require nextpdf/enterprise:^3Registrieren Sie die Regel in Ihrer PHPStan-Konfiguration:
rules: - NextPDF\Enterprise\PHPStan\EditionBoundaryRuleKonzeptioneller Überblick
Abschnitt betitelt „Konzeptioneller Überblick“Die Regel inspiziert jede use-Anweisung und vergleicht den importierenden Namespace mit dem Namespace-Präfix des importierten Symbols. Sie erzwingt eine eindirektionale Abhängigkeitsreihenfolge:
- Core-Code (
NextPDF\, ausgenommen die Sub-Namespaces von Pro und Enterprise) darf nicht ausNextPDF\Pro\*oderNextPDF\Enterprise\*importieren. - Pro-Code (
NextPDF\Pro\*) darf nicht ausNextPDF\Enterprise\*importieren. - Enterprise-Code (
NextPDF\Enterprise\*) ist die oberste Stufe und darf aus jedem von ihnen importieren.
Wenn ein Import die Grenze überschreitet, meldet die Regel einen Fehler mit dem Identifikator nextpdf.editionBoundaryViolation und einer Meldung, die den importierenden Namespace, das verbotene Präfix und menschenlesbare Editionslabels benennt. Die Prüfung ist rein statisch: Sie liest den Importgraphen zur Analysezeit.
Warum es so funktioniert
Abschnitt betitelt „Warum es so funktioniert“Die Regel argumentiert über use-Anweisungen zur Analysezeit, nicht zur Laufzeit, weil die Editionsgrenze eine architektonische Invariante und keine Laufzeitentscheidung ist. Core, Pro und Enterprise werden als separate Pakete ausgeliefert, sodass eine niedrigere Stufe niemals von Symbolen abhängen darf, die in einer kleineren Installation fehlen. Einen grenzüberschreitenden Import während der statischen Analyse zu erfassen, lässt den Build scheitern, bevor der Fehler ausgeliefert wird. Die Alternative ist schlimmer: Derselbe Import taucht später als fataler Fehler wegen einer fehlenden Klasse in einem Core-only-Deployment auf. Die Reihenfolge ist bewusst eindirektional, Core → Pro → Enterprise, und spiegelt wider, wie die Open-Core-Pakete aufeinander aufbauen. Enterprise bleibt uneingeschränkt, weil es die oberste Stufe ist und jede darunterliegende Edition referenzieren darf.
Designhintergrund: Open Core, kein Lock-in.
API-Oberfläche
Abschnitt betitelt „API-Oberfläche“| Klasse | Zuständigkeit |
|---|---|
EditionBoundaryRule | PHPStan-Regel über use-Anweisungen; meldet Verletzungen der Editionsgrenze. |
Die Regel implementiert den Standard-PHPStan-Rule-Vertrag über den Knotentyp Use_ und gibt Fehler unter dem Identifikator nextpdf.editionBoundaryViolation aus.
Codebeispiel — Schnellstart
Abschnitt betitelt „Codebeispiel — Schnellstart“# phpstan.neonincludes: - vendor/nextpdf/enterprise/phpstan.neon.distCodebeispiel — Produktion
Abschnitt betitelt „Codebeispiel — Produktion“# phpstan.neonrules: - NextPDF\Enterprise\PHPStan\EditionBoundaryRule
parameters: level: 9 paths: - srcEine Verletzung erscheint in der PHPStan-Ausgabe zum Beispiel so: Ein Enterprise-Import innerhalb von Core-Code wird als Verletzung der Editionsgrenze auf der betreffenden use-Zeile unter nextpdf.editionBoundaryViolation gemeldet.
Sonderfälle & Fallstricke
Abschnitt betitelt „Sonderfälle & Fallstricke“- Die Regel argumentiert über den Namespace der analysierten Datei und das Präfix des importierten Symbols. Code in einem Nicht-
NextPDF\-Namespace wird von dieser Regel nicht eingeschränkt. - Enterprise-Namespaces sind per Design uneingeschränkt; die Regel markiert niemals eine Enterprise-Datei für das Importieren von Pro oder Core.
- Die Regel analysiert
use-Anweisungen. Eine voll qualifizierte Klassenreferenz, die inline ohne einusegeschrieben ist, liegt außerhalb des Umfangs dieser Regel; bevorzugen Sie Imports, sodass die Grenze erzwungen wird. - Die Prüfung ist statisch und beratend: Sie meldet Grenzverletzungen. Sie beweist nicht, dass Ihr Programm im Übrigen korrekt ist.
Performance
Abschnitt betitelt „Performance“Die Regel läuft pro use-Anweisung während der PHPStan-Analyse und führt String-Präfix-Vergleiche durch. Ihr Overhead ist proportional zur Anzahl der Import-Anweisungen und ist relativ zur gesamten Analysezeit vernachlässigbar.
Sicherheitshinweise
Abschnitt betitelt „Sicherheitshinweise“Dies ist eine Regel der statischen Analyse. Sie wird zur Build-Zeit innerhalb von PHPStan ausgeführt, liest ausschließlich die Quellstruktur und hat keine Laufzeitwirkung auf erzeugte PDFs.
Datenresidenz & PII-Minderungen
Abschnitt betitelt „Datenresidenz & PII-Minderungen“Die Regel verarbeitet Quellcode zur Analysezeit und handhabt keine Dokument- oder personenbezogenen Daten.
Sichere Telemetrie & Log-Bereinigung
Abschnitt betitelt „Sichere Telemetrie & Log-Bereinigung“Die Ausgabe der Regel ist PHPStan-Diagnostik. Sie enthält Namespaces und Symbolnamen aus Ihrem eigenen Code; behandeln Sie Analyselogs mit derselben Sorgfalt wie Ihren Quellcode.
Konformität
Abschnitt betitelt „Konformität“Es wird keine Standardkonformität beansprucht. Dies ist eine Regel für Entwickler-Tooling, die eine interne architektonische Einschränkung (die Editionsschichtung) in nachgelagerten Builds erzwingt.
Verhalten im FIPS-Modus
Abschnitt betitelt „Verhalten im FIPS-Modus“Nicht zutreffend; die Regel führt keine kryptografischen Operationen durch und hat keinen Laufzeitpfad.
Bedrohungsmodell
Abschnitt betitelt „Bedrohungsmodell“Keine Laufzeitkomponente. Der Zweck der Regel ist, einen architektonischen Fehler — einen Import über die Editionsgrenze — zu erfassen, bevor er ausgeliefert wird, indem sie die Stufe der statischen Analyse scheitern lässt.
Verhaltensvertrag
Abschnitt betitelt „Verhaltensvertrag“- Die Regel inspiziert jede
use-Anweisung und erzwingt eine eindirektionale Abhängigkeitsreihenfolge: Core darf nicht aus Pro oder Enterprise importieren; Pro darf nicht aus Enterprise importieren; Enterprise darf aus jedem importieren. - Ein grenzüberschreitender Import wird unter dem Identifikator
nextpdf.editionBoundaryViolationmit dem importierenden Namespace und dem verbotenen Präfix gemeldet. - Code in einem Nicht-
NextPDF\-Namespace wird von dieser Regel nicht eingeschränkt. - Eine voll qualifizierte Inline-Klassenreferenz ohne ein
useliegt außerhalb des Umfangs dieser Regel; bevorzugen Sie Imports, sodass die Grenze erzwungen wird.
Publikationsgrenze
Abschnitt betitelt „Publikationsgrenze“Diese Seite dokumentiert ausschließlich extern beobachtbares Verhalten und die unterstützte öffentliche API-Oberfläche. Interne Namespace-Pfade, Helper-Klassen, Mechanismustabellen, Runbook-Dateinamen und Ticket-Präfixe liegen außerhalb des Umfangs.
Core-Fallback
Abschnitt betitelt „Core-Fallback“NextPDF Core liefert keine PHPStan-Regel für die Editionsgrenze. Ein Core-only-Konsument, der die Editionsschichtung in seinem eigenen Build erzwingen möchte, muss eine gleichwertige Regel selbst schreiben oder beschaffen.
Pro-Fallback
Abschnitt betitelt „Pro-Fallback“NextPDF Pro liefert die PHPStan-Regel für die Editionsgrenze nicht; sie ist ausschließlich Teil des Pakets nextpdf/enterprise. Ein Pro-only-Deployment hat keine Enterprise-Komponente, von der aus diese Regel registriert werden könnte. Siehe das Enterprise – Überblick zur Enterprise-Oberfläche.
Hinweis zur Enterprise-Grenze
Abschnitt betitelt „Hinweis zur Enterprise-Grenze“Interne Mechanismusdetails verbleiben in der internen Dokumentation des Quell-Repositorys und liegen außerhalb des Umfangs dieses Handbuchs.
Deployment-Grenze
Abschnitt betitelt „Deployment-Grenze“Dies ist eine Regel der statischen Analyse zur Build-Zeit. Sie wird innerhalb von PHPStan während der Analyse ausgeführt, liest ausschließlich die Quellstruktur und hat keine Laufzeitwirkung auf erzeugte PDFs oder auf irgendeinen bereitgestellten Dienst. Ihre Registrierung und die Wahl der PHPStan-Stufe liegen in der Verantwortung des Integrators.
Grenze der rechtlichen Compliance
Abschnitt betitelt „Grenze der rechtlichen Compliance“Diese Seite beschreibt eine Regel der statischen Analyse für Entwickler-Tooling. Sie gibt keine Compliance-, Zertifizierungs- oder Korrektheitsgarantie für Ihren Code; sie meldet ausschließlich Verletzungen der Editions-Importgrenze und ist beratend. Sie stellt keine Rechtsberatung dar. Die Beurteilung, ob Ihr Build Ihre eigenen architektonischen oder vertraglichen Pflichten erfüllt, liegt in Ihrer Verantwortung.