Zum Inhalt springen
getnextpdf.com

Enterprise Edition

PHPStan

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.

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.

Terminal-Fenster
composer require nextpdf/enterprise:^3

Registrieren Sie die Regel in Ihrer PHPStan-Konfiguration:

rules:
- NextPDF\Enterprise\PHPStan\EditionBoundaryRule

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 aus NextPDF\Pro\* oder NextPDF\Enterprise\* importieren.
  • Pro-Code (NextPDF\Pro\*) darf nicht aus NextPDF\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.

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.

KlasseZuständigkeit
EditionBoundaryRulePHPStan-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.

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

Eine 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.

  • 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 ein use geschrieben 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.

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.

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.

Die Regel verarbeitet Quellcode zur Analysezeit und handhabt keine Dokument- oder personenbezogenen Daten.

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.

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.

Nicht zutreffend; die Regel führt keine kryptografischen Operationen durch und hat keinen Laufzeitpfad.

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.

  • 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.editionBoundaryViolation mit 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 use liegt außerhalb des Umfangs dieser Regel; bevorzugen Sie Imports, sodass die Grenze erzwungen wird.

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.

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.

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.

Interne Mechanismusdetails verbleiben in der internen Dokumentation des Quell-Repositorys und liegen außerhalb des Umfangs dieses Handbuchs.

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.

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.