Enterprise editie
PHPStan
In het kort
Sectie met titel “In het kort”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.
Beschikbaarheid & licentie
Sectie met titel “Beschikbaarheid & licentie”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.
Installatie
Sectie met titel “Installatie”composer require nextpdf/enterprise:^3Registreer de regel in je PHPStan-configuratie:
rules: - NextPDF\Enterprise\PHPStan\EditionBoundaryRuleConceptueel overzicht
Sectie met titel “Conceptueel overzicht”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 uitNextPDF\Pro\*ofNextPDF\Enterprise\*. - Pro-code (
NextPDF\Pro\*) mag niet importeren uitNextPDF\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.
Waarom het zo werkt
Sectie met titel “Waarom het zo werkt”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.
API-oppervlak
Sectie met titel “API-oppervlak”| Klasse | Verantwoordelijkheid |
|---|---|
EditionBoundaryRule | PHPStan-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.
Codevoorbeeld — Snelstart
Sectie met titel “Codevoorbeeld — Snelstart”# phpstan.neonincludes: - vendor/nextpdf/enterprise/phpstan.neon.distCodevoorbeeld — Productie
Sectie met titel “Codevoorbeeld — Productie”# phpstan.neonrules: - NextPDF\Enterprise\PHPStan\EditionBoundaryRule
parameters: level: 9 paths: - srcEen 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.
Randgevallen en valkuilen
Sectie met titel “Randgevallen en valkuilen”- 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 eenuseis 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.
Prestaties
Sectie met titel “Prestaties”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.
Beveiligingsnotities
Sectie met titel “Beveiligingsnotities”Dit is een statische-analyseregel. Ze draait op buildtijd binnen PHPStan, leest uitsluitend de bronstructuur en heeft geen runtime-effect op gegenereerde PDF’s.
Datalocatie & PII-mitigaties
Sectie met titel “Datalocatie & PII-mitigaties”De regel verwerkt broncode op analysetijd en behandelt geen document- of persoonsgegevens.
Veilige telemetrie & logopschoning
Sectie met titel “Veilige telemetrie & logopschoning”De regeluitvoer bestaat uit PHPStan-diagnostiek. Ze bevat namespaces en symboolnamen uit je eigen code; behandel analyselogs met dezelfde zorg als je broncode.
Conformiteit
Sectie met titel “Conformiteit”Er wordt geen conformiteit met standaarden geclaimd. Dit is een ontwikkelaartooling-regel die een interne architectuurbeperking (editielagen) in downstreambuilds afdwingt.
FIPS-modusgedrag
Sectie met titel “FIPS-modusgedrag”Niet van toepassing; de regel voert geen cryptografische operaties uit en heeft geen runtimepad.
Dreigingsmodel
Sectie met titel “Dreigingsmodel”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.
Gedragscontract
Sectie met titel “Gedragscontract”- 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.editionBoundaryViolationmet 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
usevalt buiten de scope van deze regel; geef de voorkeur aan imports, zodat de grens wordt afgedwongen.
Publicatiegrens
Sectie met titel “Publicatiegrens”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.
Core-terugval
Sectie met titel “Core-terugval”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.
Pro-terugval
Sectie met titel “Pro-terugval”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.
Opmerking over de Enterprise-grens
Sectie met titel “Opmerking over de Enterprise-grens”Interne mechanismedetails blijven in de interne documentatie van de bronrepository en vallen buiten de scope van deze handleiding.
Implementatiegrens
Sectie met titel “Implementatiegrens”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.
Juridische-compliancegrens
Sectie met titel “Juridische-compliancegrens”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.