Ga naar inhoud
getnextpdf.com

Enterprise editie

PHPStan

NextPDF Enterprise levert een aangepaste PHPStan-regel, EditionBoundaryRule, die use-imports markeert die de editiegrens Core → Pro → Enterprise overschrijden. Het is een ontwikkelaargerichte statische controle die schendingen rapporteert; ze analyseert importstatements en garandeert niet de correctheid van je code.

Deze mogelijkheid wordt geleverd in NextPDF Enterprise (nextpdf/enterprise) en wordt geactiveerd met een licentie-envelop op Enterprise-niveau. Het is een PHPStan-regel op buildtijd die via je PHPStan-configuratie wordt geregistreerd, dus ze draait tijdens de statische analyse en heeft geen runtimepad; de licentie-gate is de pakketgrens nextpdf/enterprise, zonder afzonderlijke capabilitycode per functie. Vergelijk edities en verkrijg een licentie.

Terminal window
composer require nextpdf/enterprise:^3

Registreer de regel in je PHPStan-configuratie:

rules:
- NextPDF\Enterprise\PHPStan\EditionBoundaryRule

De regel inspecteert elke use-statement en vergelijkt de importerende namespace met de namespace-prefix van het geïmporteerde symbool. Ze dwingt een eenrichtingsafhankelijkheidsvolgorde af:

  • Core-code (NextPDF\, met uitzondering van de Pro- en Enterprise-subnamespaces) mag niet importeren uit NextPDF\Pro\* of NextPDF\Enterprise\*.
  • Pro-code (NextPDF\Pro\*) mag niet importeren uit NextPDF\Enterprise\*.
  • Enterprise-code (NextPDF\Enterprise\*) is de hoogste tier en mag uit elk van deze importeren.

Wanneer een import de grens overschrijdt, rapporteert de regel een fout met de identifier nextpdf.editionBoundaryViolation en een bericht dat de importerende namespace, de verboden prefix en menselijk leesbare editielabels benoemt. De controle is puur statisch: ze leest de importgraaf op analysetijd.

De regel redeneert over use-statements op analysetijd, niet op runtime, omdat de editiegrens een architecturale invariant is in plaats van een runtime-beslissing. Core, Pro en Enterprise worden als aparte pakketten geleverd, dus een lagere tier mag nooit afhangen van symbolen die in een kleinere installatie ontbreken. Een grens overschrijdende import tijdens de statische analyse onderscheppen laat de build falen voordat de fout in productie gaat. Het alternatief is erger: dezelfde import komt later naar boven als een fatale ontbrekende-class-fout in een Core-only-implementatie. De volgorde is bewust eenrichting, Core → Pro → Enterprise, en spiegelt hoe de open-core-pakketten op elkaar gestapeld worden. Enterprise blijft onbeperkt omdat het de hoogste tier is en naar elke editie eronder mag verwijzen.

Ontwerpachtergrond: Open core, geen lock-in.

KlasseVerantwoordelijkheid
EditionBoundaryRulePHPStan-regel over use-statements; rapporteert schendingen van de editiegrens.

De regel implementeert het standaard PHPStan Rule-contract over het Use_-nodetype en geeft fouten uit onder de identifier nextpdf.editionBoundaryViolation.

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

Een schending verschijnt in de PHPStan-uitvoer als, bijvoorbeeld: een Enterprise-import binnen Core-code wordt gerapporteerd als een schending van de editiegrens op de aanstootgevende use-regel, onder nextpdf.editionBoundaryViolation.

  • De regel redeneert over de namespace van het geanalyseerde bestand en de prefix van het geïmporteerde symbool. Code in een niet-NextPDF\-namespace wordt niet door deze regel beperkt.
  • Enterprise-namespaces zijn per ontwerp onbeperkt; de regel markeert nooit een Enterprise-bestand voor het importeren van Pro of Core.
  • De regel analyseert use-statements. Een volledig gekwalificeerde class-referentie die inline zonder een use is geschreven, valt buiten de scope van deze regel; geef de voorkeur aan imports, zodat de grens wordt afgedwongen.
  • De controle is statisch en adviserend: ze rapporteert schendingen van de grens. Ze bewijst niet dat je programma verder correct is.

De regel draait per use-statement tijdens de PHPStan-analyse en voert string-prefix-vergelijkingen uit. De overhead is evenredig aan het aantal importstatements en is verwaarloosbaar ten opzichte van de totale analysetijd.

Dit is een statische-analyseregel. Ze draait op buildtijd binnen PHPStan, leest uitsluitend de bronstructuur en heeft geen runtime-effect op gegenereerde PDF’s.

De regel verwerkt broncode op analysetijd en behandelt geen document- of persoonsgegevens.

De regeluitvoer bestaat uit PHPStan-diagnostiek. Ze bevat namespaces en symboolnamen uit je eigen code; behandel analyselogs met dezelfde zorg als je broncode.

Er wordt geen conformiteit met standaarden geclaimd. Dit is een ontwikkelaartooling-regel die een interne architectuurbeperking (editielagen) in downstreambuilds afdwingt.

Niet van toepassing; de regel voert geen cryptografische operaties uit en heeft geen runtimepad.

Geen runtimecomponent. Het doel van de regel is een architectuurfout — een import over de editiegrens — te onderscheppen voordat deze in productie gaat, door de statische-analysefase te laten falen.

  • De regel inspecteert elke use-statement en dwingt een eenrichtingsafhankelijkheidsvolgorde af: Core mag Pro of Enterprise niet importeren; Pro mag Enterprise niet importeren; Enterprise mag elk importeren.
  • Een import die de grens overschrijdt, wordt gerapporteerd onder de identifier nextpdf.editionBoundaryViolation met de importerende namespace en de verboden prefix.
  • Code in een niet-NextPDF\-namespace wordt niet door deze regel beperkt.
  • Een volledig gekwalificeerde inline class-referentie zonder een use valt buiten de scope van deze regel; geef de voorkeur aan imports, zodat de grens wordt afgedwongen.

Deze pagina documenteert uitsluitend extern waarneembaar gedrag en het ondersteunde openbare API-oppervlak. Interne namespace-paden, helperclasses, mechanismetabellen, runbook-bestandsnamen en ticketprefixen vallen buiten de scope.

NextPDF Core levert geen editiegrens-PHPStan-regel. Een Core-only-consument die editielagen in zijn eigen build wil afdwingen, moet zelf een gelijkwaardige regel schrijven of betrekken.

NextPDF Pro levert de editiegrens-PHPStan-regel niet; deze maakt uitsluitend deel uit van het nextpdf/enterprise-pakket. Een Pro-only-implementatie heeft geen Enterprise-component om deze regel vanuit te registreren. Zie het Enterprise-overzicht voor het Enterprise-oppervlak.

Interne mechanismedetails blijven in de interne documentatie van de bronrepository en vallen buiten de scope van deze handleiding.

Dit is een statische-analyseregel op buildtijd. Ze draait binnen PHPStan tijdens de analyse, leest uitsluitend de bronstructuur en heeft geen runtime-effect op gegenereerde PDF’s of op enige geïmplementeerde service. Het registreren ervan en het kiezen van het PHPStan-niveau zijn de verantwoordelijkheid van de integrator.

Deze pagina beschrijft een statische-analyseregel uit de ontwikkelaartooling. Ze maakt geen compliance-, certificerings- of correctheidsgarantie over je code; ze rapporteert uitsluitend schendingen van de editie-importgrens en is adviserend. Ze vormt geen juridisch advies. Beoordelen of je build aan je eigen architectuur- of contractuele verplichtingen voldoet, is jouw verantwoordelijkheid.