Enterprise Edition
PHPStan — Ausführliche Referenz
Auf einen Blick
Abschnitt betitelt „Auf einen Blick“- Eine öffentliche Klasse:
EditionBoundaryRule, eine benutzerdefinierte PHPStan-Regel überuse-Anweisungen. - Erzwingt die einseitig gerichtete Edition-Abhängigkeitsreihenfolge. Core importiert niemals Pro oder Enterprise. Pro importiert niemals Enterprise.
- Verstöße melden den Identifier
nextpdf.editionBoundaryViolationauf der betreffendenuse-Zeile. - Nur zur Build-Zeit. Die Regel hat keinen Laufzeitpfad und keine Auswirkung auf generierte PDFs.
- Enthalten in
nextpdf/enterprise. Die Registrierung erfolgt über die Standard-PHPStan-Konfiguration.
Verfügbarkeit & Lizenzierung
Abschnitt betitelt „Verfügbarkeit & Lizenzierung“Diese Fähigkeit ist in NextPDF Enterprise (nextpdf/enterprise) enthalten und wird mit einem Lizenz-Envelope der Enterprise-Stufe aktiviert. Es handelt sich um eine statische Analyseregel zur Build-Zeit ohne Laufzeitpfad: Die Paketgrenze von nextpdf/enterprise schaltet sie frei, und sie trägt keinen separaten Fähigkeitscode je Feature. Core und Pro liefern kein Äquivalent aus. Editionen vergleichen und Lizenz erwerben.
Öffentliche API-Oberfläche
Abschnitt betitelt „Öffentliche API-Oberfläche“Installieren Sie das Paket und registrieren Sie anschließend die Regel in der PHPStan-Konfiguration.
composer require nextpdf/enterprise:^3rules: - NextPDF\Enterprise\PHPStan\EditionBoundaryRule| Symbol | Parameter | Standardverhalten | Rückgabe | Wirft oder scheitert mit | Hinweise |
|---|---|---|---|---|---|
EditionBoundaryRule | Keine (keine Konstruktorargumente) | Zustandslose PHPStan-Regel, abonniert auf use-Anweisungen | — | Wirft niemals | final; implementiert PHPStan\Rules\Rule über Use_ |
EditionBoundaryRule::getNodeType() | Keine | Deklariert den AST-Knotentyp, den die Regel abonniert | string (Use_::class) | Wirft niemals | Standard-PHPStan-Rule-Vertragsmethode |
EditionBoundaryRule::processNode() | Node $node, Scope $scope | Prüft jedes importierte Symbol gegen die für den analysierten Namespace verbotenen Präfixe | list<IdentifierRuleError> (leer bei Konformität) | Wirft niemals; Verstöße erscheinen als Regelfehler | Fehler-Identifier nextpdf.editionBoundaryViolation |
final class EditionBoundaryRule implements Rule{ public function getNodeType(): string;
public function processNode(Node $node, Scope $scope): array;}Verhaltensvertrag
Abschnitt betitelt „Verhaltensvertrag“EditionBoundaryRule implementiert den Standard-PHPStan-Rule-Vertrag über den Knotentyp Use_. Für jede use-Anweisung vergleicht sie den Namespace der analysierten Datei mit dem Namespace-Präfix jedes importierten Symbols und erzwingt eine einseitig gerichtete Abhängigkeitsreihenfolge.
| Analysierter Namespace | Edition-Bezeichnung | Verbotene Import-Präfixe |
|---|---|---|
NextPDF\*-Unter-Namespaces, ausgenommen Pro und Enterprise | Core | NextPDF\Pro\, NextPDF\Enterprise\ |
NextPDF\Pro und NextPDF\Pro\* | Pro | NextPDF\Enterprise\ |
NextPDF\Enterprise und NextPDF\Enterprise\* | Enterprise | Keine (oberste Stufe) |
Jeder Namespace außerhalb von NextPDF\ | — | Keine (uneingeschränkt) |
Wenn ein Import die Grenze überschreitet, meldet die Regel einen Fehler unter dem Identifier nextpdf.editionBoundaryViolation, verankert an der Zeile der betreffenden use-Anweisung. Die Meldung nennt das importierte Symbol, den importierenden Namespace, das verbotene Präfix und menschenlesbare Edition-Bezeichnungen. Jedes importierte Symbol erzeugt höchstens einen Fehler: Der Präfixabgleich stoppt beim ersten passenden verbotenen Präfix.
Die Prüfung ist statisch und beratend. Sie meldet Grenzverstöße auf Import-Anweisungen. Sie beweist nicht, dass das analysierte Programm im Übrigen korrekt ist.
Randfälle & Fehlermodi
Abschnitt betitelt „Randfälle & Fehlermodi“- Namespaces außerhalb von
NextPDF\und Dateien ohne Namespace erzeugen keine Fehler; die Regel gibt eine leere Liste zurück. - Code, der im exakten Wurzel-Namespace
NextPDFdeklariert ist (ohne Unter-Namespace-Segment), ist nicht eingeschränkt; die Grenzerkennung greift beiNextPDF\-Unter-Namespaces. - Enterprise-Dateien werden niemals wegen des Imports von Pro- oder Core-Symbolen markiert (oberste Stufe, gewollt).
- Der Präfixabgleich ist trennzeichenbewusst. Ein Namespace wie
NextPDF\Professionalwird als Core klassifiziert, nicht als Pro, und Importe darunter erzeugen niemals ein Fehlmatch gegen das PräfixNextPDF\Pro\. - Der Import der wörtlichen Namen
NextPDF\ProoderNextPDF\Enterpriseohne weiteres Segment wird nicht markiert; nur Symbole unter diesen Präfixen passen. - Die Regel filtert nicht nach Import-Art: Klassen-,
function- undconst-Importe unter einem verbotenen Präfix melden alle. - Inline vollqualifizierte Referenzen ohne
use-Anweisung sind nicht im Geltungsbereich. Bevorzugen Sie Importe, damit die Grenze durchgesetzt wird. - Gruppierte
use-Deklarationen werden als der eigenständige KnotentypGroupUsegeparst und fallen außerhalb derUse_-Abonnierung der Regel; einfache Importe je Symbol halten die Grenze geprüft. processNode()wirft niemals; alle Ergebnisse erscheinen als PHPStan-Regelfehler oder als leeres Ergebnis.- Keine Laufzeitkomponente. Sie führt keine kryptografischen Operationen aus, und der FIPS-Modus ist nicht anwendbar.
Konformität
Abschnitt betitelt „Konformität“Es wird keine Standardkonformität beansprucht. Dies ist eine Entwickler-Tooling-Regel, die eine interne Architekturbeschränkung (Edition-Schichtung) in nachgelagerten Builds durchsetzt. Sie implementiert den PHPStan-Regel-Erweiterungsvertrag, der eine Drittanbieter-Tool-API ist und kein formaler Standard. Die Regel gibt keine Compliance-, Zertifizierungs- oder Korrektheitsgarantie über den analysierten Code; sie meldet ausschließlich Edition-Grenz-Import-Verstöße und ist beratend.
Entwicklungshinweise
Abschnitt betitelt „Entwicklungshinweise“- Die Regel läuft während der Analyse innerhalb von PHPStan, liest ausschließlich die Quellstruktur und hat keine Auswirkung auf generierte PDFs oder einen bereitgestellten Dienst.
- Die Registrierung der Regel und die Wahl des PHPStan-Levels bleiben in der Verantwortung des Integrators.
- Die Klasse ist
finalund zustandslos, daher ist sie unter den parallelen Analyse-Workern von PHPStan sicher. - Die Analyseausgabe ist für einen gegebenen Quellbaum deterministisch: Dieselben Eingaben liefern dieselbe Fehlerliste.
- Verfügbar seit
nextpdf/enterprise2.1.0; der obige Vertrag spiegelt 3.1.0 wider.
Veröffentlichungsgrenze
Abschnitt betitelt „Veröffentlichungsgrenze“Diese Seite dokumentiert ausschließlich extern beobachtbares Verhalten und die unterstützte öffentliche API-Oberfläche. Interne Namespace-Pfade, Hilfsklassen, Mechanismustabellen, Runbook-Dateinamen und Ticket-Präfixe sind nicht im Geltungsbereich.