Ga naar inhoud
getnextpdf.com

Enterprise editie

PHPStan — Diepe referentie

  • Eén publieke klasse: EditionBoundaryRule, een custom PHPStan-regel over use-instructies.
  • Dwingt de eenrichtings-editie-afhankelijkheidsvolgorde af. Core importeert nooit Pro of Enterprise. Pro importeert nooit Enterprise.
  • Overtredingen rapporteren de identifier nextpdf.editionBoundaryViolation op de overtredende use-regel.
  • Alleen build-time. De regel heeft geen runtime-pad en geen effect op gegenereerde PDF’s.
  • Wordt geleverd in nextpdf/enterprise. Registratie gebruikt de standaard PHPStan-configuratie.

Deze mogelijkheid wordt geleverd in NextPDF Enterprise (nextpdf/enterprise) en wordt geactiveerd met een licentie-envelop op Enterprise-niveau. Het is een statische-analyseregel op build-time zonder runtime-pad: de pakketgrens van nextpdf/enterprise schermt deze af, en deze draagt geen afzonderlijke capaciteitscode per functie. Core en Pro leveren geen equivalent. Vergelijk edities en vraag een licentie aan.

Installeer het pakket en registreer de regel vervolgens in de PHPStan-configuratie.

Terminal window
composer require nextpdf/enterprise:^3
rules:
- NextPDF\Enterprise\PHPStan\EditionBoundaryRule
SymboolParametersStandaardgedragRetourneertGooit of faalt metOpmerkingen
EditionBoundaryRuleGeen (geen constructorargumenten)Stateless PHPStan-regel geabonneerd op use-instructiesGooit nooitfinal; implementeert PHPStan\Rules\Rule over Use_
EditionBoundaryRule::getNodeType()GeenDeclareert het AST-nodetype waarop de regel zich abonneertstring (Use_::class)Gooit nooitStandaard PHPStan Rule-contractmethode
EditionBoundaryRule::processNode()Node $node, Scope $scopeControleert elk geïmporteerd symbool tegen de prefixen die voor de geanalyseerde namespace verboden zijnlist<IdentifierRuleError> (leeg indien conform)Gooit nooit; overtredingen komen naar voren als regelfoutenError-identifier nextpdf.editionBoundaryViolation
final class EditionBoundaryRule implements Rule
{
public function getNodeType(): string;
public function processNode(Node $node, Scope $scope): array;
}

EditionBoundaryRule implementeert het standaard PHPStan Rule-contract over het Use_-nodetype. Voor elke use-instructie vergelijkt deze de namespace van het geanalyseerde bestand met de namespace-prefix van elk geïmporteerd symbool en dwingt een eenrichtingsafhankelijkheidsvolgorde af.

Geanalyseerde namespaceEditielabelVerboden import-prefixen
NextPDF\*-subnamespaces, met uitzondering van Pro en EnterpriseCoreNextPDF\Pro\, NextPDF\Enterprise\
NextPDF\Pro en NextPDF\Pro\*ProNextPDF\Enterprise\
NextPDF\Enterprise en NextPDF\Enterprise\*EnterpriseGeen (bovenste tier)
Elke namespace buiten NextPDF\Geen (onbeperkt)

Wanneer een import de grens overschrijdt, rapporteert de regel een fout onder de identifier nextpdf.editionBoundaryViolation, verankerd aan de regel van de overtredende use-instructie. Het bericht benoemt het geïmporteerde symbool, de importerende namespace, de verboden prefix en voor mensen leesbare editielabels. Elk geïmporteerd symbool produceert hoogstens één fout: prefix-matching stopt bij de eerste verboden prefix die overeenkomt.

De controle is statisch en adviserend. Deze rapporteert grensovertredingen op importinstructies. Deze bewijst niet dat het geanalyseerde programma verder correct is.

  • Namespaces buiten NextPDF\ en bestanden zonder namespace produceren geen fouten; de regel retourneert een lege lijst.
  • Code die in de exacte root-namespace NextPDF is gedeclareerd (zonder subnamespace-segment) wordt niet beperkt; grensdetectie matcht NextPDF\-subnamespaces.
  • Enterprise-bestanden worden nooit gemarkeerd voor het importeren van Pro- of Core-symbolen (bovenste tier, by design).
  • Prefix-matching is separator-bewust. Een namespace zoals NextPDF\Professional classificeert als Core, niet als Pro, en imports daaronder geven nooit een false-positive tegen de prefix NextPDF\Pro\.
  • Het importeren van de letterlijke namen NextPDF\Pro of NextPDF\Enterprise zonder verder segment wordt niet gemarkeerd; alleen symbolen onder die prefixen matchen.
  • De regel filtert niet op importsoort: class-, function- en const-imports onder een verboden prefix rapporteren allemaal.
  • Inline fully-qualified referenties die zonder een use-instructie zijn geschreven, vallen buiten de scope. Gebruik bij voorkeur imports zodat de grens wordt afgedwongen.
  • Group-use-declaraties parsen als het aparte GroupUse-nodetype en vallen buiten de Use_-abonnering van de regel; gewone imports per symbool houden de grens gecontroleerd.
  • processNode() gooit nooit; alle uitkomsten komen naar voren als PHPStan-regelfouten of een leeg resultaat.
  • Geen runtime-component. Deze voert geen cryptografische bewerkingen uit, en de FIPS-modus is niet van toepassing.

Er wordt geen standaardconformiteit geclaimd. Dit is een developer-tooling-regel die een interne architecturale beperking (editielagen) in downstream-builds afdwingt. Deze implementeert het PHPStan-regelextensiecontract, een third-party-tool-API, geen formele standaard. De regel doet geen compliance-, certificerings- of correctheidsgarantie over geanalyseerde code; deze rapporteert alleen editiegrens-importovertredingen en is adviserend.

  • De regel wordt uitgevoerd binnen PHPStan tijdens de analyse, leest alleen de bronstructuur en heeft geen effect op gegenereerde PDF’s of enige geïmplementeerde service.
  • Het registreren van de regel en het kiezen van het PHPStan-niveau blijven de verantwoordelijkheid van de integrator.
  • De klasse is final en stateless, dus deze is veilig onder de parallelle analyse-workers van PHPStan.
  • De analyse-output is deterministisch voor een gegeven brontree: dezelfde inputs leveren dezelfde foutenlijst op.
  • Beschikbaar sinds nextpdf/enterprise 2.1.0; het bovenstaande contract weerspiegelt 3.1.0.

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