Enterprise editie
PHPStan — Diepe referentie
In een oogopslag
Sectie met titel “In een oogopslag”- Eén publieke klasse:
EditionBoundaryRule, een custom PHPStan-regel overuse-instructies. - Dwingt de eenrichtings-editie-afhankelijkheidsvolgorde af. Core importeert nooit Pro of Enterprise. Pro importeert nooit Enterprise.
- Overtredingen rapporteren de identifier
nextpdf.editionBoundaryViolationop de overtredendeuse-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.
Beschikbaarheid en licentie
Sectie met titel “Beschikbaarheid en licentie”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.
Publiek API-oppervlak
Sectie met titel “Publiek API-oppervlak”Installeer het pakket en registreer de regel vervolgens in de PHPStan-configuratie.
composer require nextpdf/enterprise:^3rules: - NextPDF\Enterprise\PHPStan\EditionBoundaryRule| Symbool | Parameters | Standaardgedrag | Retourneert | Gooit of faalt met | Opmerkingen |
|---|---|---|---|---|---|
EditionBoundaryRule | Geen (geen constructorargumenten) | Stateless PHPStan-regel geabonneerd op use-instructies | — | Gooit nooit | final; implementeert PHPStan\Rules\Rule over Use_ |
EditionBoundaryRule::getNodeType() | Geen | Declareert het AST-nodetype waarop de regel zich abonneert | string (Use_::class) | Gooit nooit | Standaard PHPStan Rule-contractmethode |
EditionBoundaryRule::processNode() | Node $node, Scope $scope | Controleert elk geïmporteerd symbool tegen de prefixen die voor de geanalyseerde namespace verboden zijn | list<IdentifierRuleError> (leeg indien conform) | Gooit nooit; overtredingen komen naar voren als regelfouten | Error-identifier nextpdf.editionBoundaryViolation |
final class EditionBoundaryRule implements Rule{ public function getNodeType(): string;
public function processNode(Node $node, Scope $scope): array;}Gedragscontract
Sectie met titel “Gedragscontract”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 namespace | Editielabel | Verboden import-prefixen |
|---|---|---|
NextPDF\*-subnamespaces, met uitzondering van Pro en Enterprise | Core | NextPDF\Pro\, NextPDF\Enterprise\ |
NextPDF\Pro en NextPDF\Pro\* | Pro | NextPDF\Enterprise\ |
NextPDF\Enterprise en NextPDF\Enterprise\* | Enterprise | Geen (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.
Randgevallen en foutmodi
Sectie met titel “Randgevallen en foutmodi”- Namespaces buiten
NextPDF\en bestanden zonder namespace produceren geen fouten; de regel retourneert een lege lijst. - Code die in de exacte root-namespace
NextPDFis gedeclareerd (zonder subnamespace-segment) wordt niet beperkt; grensdetectie matchtNextPDF\-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\Professionalclassificeert als Core, niet als Pro, en imports daaronder geven nooit een false-positive tegen de prefixNextPDF\Pro\. - Het importeren van de letterlijke namen
NextPDF\ProofNextPDF\Enterprisezonder verder segment wordt niet gemarkeerd; alleen symbolen onder die prefixen matchen. - De regel filtert niet op importsoort: class-,
function- enconst-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 aparteGroupUse-nodetype en vallen buiten deUse_-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.
Conformiteit
Sectie met titel “Conformiteit”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.
Ontwikkelnotities
Sectie met titel “Ontwikkelnotities”- 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
finalen 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/enterprise2.1.0; het bovenstaande contract weerspiegelt 3.1.0.
Publicatiegrens
Sectie met titel “Publicatiegrens”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.