Zum Inhalt springen
getnextpdf.com

Enterprise Edition

PHPStan — Ausführliche Referenz

  • Eine öffentliche Klasse: EditionBoundaryRule, eine benutzerdefinierte PHPStan-Regel über use-Anweisungen.
  • Erzwingt die einseitig gerichtete Edition-Abhängigkeitsreihenfolge. Core importiert niemals Pro oder Enterprise. Pro importiert niemals Enterprise.
  • Verstöße melden den Identifier nextpdf.editionBoundaryViolation auf der betreffenden use-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.

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.

Installieren Sie das Paket und registrieren Sie anschließend die Regel in der PHPStan-Konfiguration.

Terminal-Fenster
composer require nextpdf/enterprise:^3
rules:
- NextPDF\Enterprise\PHPStan\EditionBoundaryRule
SymbolParameterStandardverhaltenRückgabeWirft oder scheitert mitHinweise
EditionBoundaryRuleKeine (keine Konstruktorargumente)Zustandslose PHPStan-Regel, abonniert auf use-AnweisungenWirft niemalsfinal; implementiert PHPStan\Rules\Rule über Use_
EditionBoundaryRule::getNodeType()KeineDeklariert den AST-Knotentyp, den die Regel abonniertstring (Use_::class)Wirft niemalsStandard-PHPStan-Rule-Vertragsmethode
EditionBoundaryRule::processNode()Node $node, Scope $scopePrüft jedes importierte Symbol gegen die für den analysierten Namespace verbotenen Präfixelist<IdentifierRuleError> (leer bei Konformität)Wirft niemals; Verstöße erscheinen als RegelfehlerFehler-Identifier nextpdf.editionBoundaryViolation
final class EditionBoundaryRule implements Rule
{
public function getNodeType(): string;
public function processNode(Node $node, Scope $scope): array;
}

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 NamespaceEdition-BezeichnungVerbotene Import-Präfixe
NextPDF\*-Unter-Namespaces, ausgenommen Pro und EnterpriseCoreNextPDF\Pro\, NextPDF\Enterprise\
NextPDF\Pro und NextPDF\Pro\*ProNextPDF\Enterprise\
NextPDF\Enterprise und NextPDF\Enterprise\*EnterpriseKeine (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.

  • 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 NextPDF deklariert ist (ohne Unter-Namespace-Segment), ist nicht eingeschränkt; die Grenzerkennung greift bei NextPDF\-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\Professional wird als Core klassifiziert, nicht als Pro, und Importe darunter erzeugen niemals ein Fehlmatch gegen das Präfix NextPDF\Pro\.
  • Der Import der wörtlichen Namen NextPDF\Pro oder NextPDF\Enterprise ohne weiteres Segment wird nicht markiert; nur Symbole unter diesen Präfixen passen.
  • Die Regel filtert nicht nach Import-Art: Klassen-, function- und const-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 Knotentyp GroupUse geparst und fallen außerhalb der Use_-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.

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.

  • 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 final und 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/enterprise 2.1.0; der obige Vertrag spiegelt 3.1.0 wider.

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.