Enterprise edizione
PHPStan — Riferimento approfondito
In sintesi
Sezione intitolata “In sintesi”- Un’unica classe pubblica:
EditionBoundaryRule, una regola PHPStan personalizzata sulle istruzioniuse. - Impone l’ordine di dipendenza unidirezionale tra le edizioni. Core non importa mai da Pro o Enterprise. Pro non importa mai da Enterprise.
- Le violazioni riportano l’identificatore
nextpdf.editionBoundaryViolationsulla rigauseincriminata. - Solo in fase di build. La regola non ha alcun percorso a runtime e nessun effetto sui PDF generati.
- Distribuita in
nextpdf/enterprise. La registrazione avviene tramite la configurazione standard di PHPStan.
Disponibilità e licenza
Sezione intitolata “Disponibilità e licenza”Questa funzionalità è distribuita in NextPDF Enterprise (nextpdf/enterprise) e si attiva con un envelope di licenza di tier Enterprise. È una regola di analisi statica in fase di build senza alcun percorso a runtime: il confine del pacchetto nextpdf/enterprise ne è il gate e non porta con sé alcun codice di capability separato per funzionalità. Core e Pro non includono un equivalente. Confronta le edizioni e ottieni una licenza.
Superficie API pubblica
Sezione intitolata “Superficie API pubblica”Installare il pacchetto, quindi registrare la regola nella configurazione di PHPStan.
composer require nextpdf/enterprise:^3rules: - NextPDF\Enterprise\PHPStan\EditionBoundaryRule| Simbolo | Parametri | Comportamento predefinito | Restituisce | Solleva o fallisce con | Note |
|---|---|---|---|---|---|
EditionBoundaryRule | Nessuno (nessun argomento del costruttore) | Regola PHPStan stateless sottoscritta alle istruzioni use | — | Non solleva mai | final; implementa PHPStan\Rules\Rule su Use_ |
EditionBoundaryRule::getNodeType() | Nessuno | Dichiara il tipo di nodo AST a cui la regola è sottoscritta | string (Use_::class) | Non solleva mai | Metodo standard del contratto Rule di PHPStan |
EditionBoundaryRule::processNode() | Node $node, Scope $scope | Confronta ogni simbolo importato con i prefissi vietati per il namespace analizzato | list<IdentifierRuleError> (vuota quando conforme) | Non solleva mai; le violazioni emergono come errori di regola | Identificatore di errore nextpdf.editionBoundaryViolation |
final class EditionBoundaryRule implements Rule{ public function getNodeType(): string;
public function processNode(Node $node, Scope $scope): array;}Contratto di comportamento
Sezione intitolata “Contratto di comportamento”EditionBoundaryRule implementa il contratto Rule standard di PHPStan sul tipo di nodo Use_. Per ciascuna istruzione use confronta il namespace del file analizzato con il prefisso di namespace di ogni simbolo importato e impone un ordine di dipendenza unidirezionale.
| Namespace analizzato | Etichetta di edizione | Prefissi di import vietati |
|---|---|---|
Sub-namespace NextPDF\*, esclusi Pro ed Enterprise | Core | NextPDF\Pro\, NextPDF\Enterprise\ |
NextPDF\Pro e NextPDF\Pro\* | Pro | NextPDF\Enterprise\ |
NextPDF\Enterprise e NextPDF\Enterprise\* | Enterprise | Nessuno (tier più alto) |
Qualsiasi namespace al di fuori di NextPDF\ | — | Nessuno (non vincolato) |
Quando un import attraversa il confine, la regola riporta un errore sotto l’identificatore nextpdf.editionBoundaryViolation, ancorato alla riga dell’istruzione use incriminata. Il messaggio nomina il simbolo importato, il namespace importatore, il prefisso vietato ed etichette di edizione leggibili dall’uomo. Ogni simbolo importato produce al massimo un errore: la corrispondenza dei prefissi si arresta al primo prefisso vietato che corrisponde.
Il controllo è statico e indicativo. Riporta le violazioni del confine sulle istruzioni di import. Non dimostra che il programma analizzato sia per il resto corretto.
Casi limite e modalità di fallimento
Sezione intitolata “Casi limite e modalità di fallimento”- I namespace al di fuori di
NextPDF\e i file senza namespace non producono errori; la regola restituisce una lista vuota. - Il codice dichiarato nel namespace radice esatto
NextPDF(senza segmento di sub-namespace) non è vincolato; il rilevamento del confine corrisponde ai sub-namespaceNextPDF\. - I file Enterprise non vengono mai segnalati per l’import di simboli Pro o Core (tier più alto, per progettazione).
- La corrispondenza dei prefissi tiene conto del separatore. Un namespace come
NextPDF\Professionalsi classifica come Core, non Pro, e gli import al suo interno non generano mai falsi positivi contro il prefissoNextPDF\Pro\. - L’import dei nomi letterali
NextPDF\ProoNextPDF\Enterprisesenza alcun ulteriore segmento non viene segnalato; corrispondono solo i simboli sotto tali prefissi. - La regola non filtra per tipo di import: gli import di classe,
functioneconstsotto un prefisso vietato vengono tutti riportati. - I riferimenti inline completamente qualificati scritti senza un’istruzione
usesono fuori ambito. Preferire gli import affinché il confine sia imposto. - Le dichiarazioni
usedi gruppo vengono analizzate come il distinto tipo di nodoGroupUsee ricadono al di fuori della sottoscrizioneUse_della regola; i normali import per singolo simbolo mantengono il confine controllato. processNode()non solleva mai; tutti gli esiti emergono come errori di regola PHPStan o come risultato vuoto.- Non è un componente a runtime. Non esegue alcuna operazione crittografica e la modalità FIPS non è applicabile.
Conformità
Sezione intitolata “Conformità”Non viene rivendicata alcuna conformità a standard. Questa è una regola di tooling per sviluppatori che impone un vincolo architetturale interno (la stratificazione delle edizioni) nelle build a valle. Implementa il contratto dell’estensione di regole di PHPStan, che è un’API di uno strumento di terze parti, non uno standard formale. La regola non offre alcuna garanzia di conformità, certificazione o correttezza sul codice analizzato; riporta solo le violazioni di import del confine di edizione ed è indicativa.
Note di sviluppo
Sezione intitolata “Note di sviluppo”- La regola viene eseguita all’interno di PHPStan durante l’analisi, legge solo la struttura del sorgente e non ha alcun effetto sui PDF generati o su qualsiasi servizio distribuito.
- Registrare la regola e scegliere il livello di PHPStan restano responsabilità dell’integratore.
- La classe è
finale stateless, quindi è sicura con i worker di analisi paralleli di PHPStan. - L’output dell’analisi è deterministico per un dato albero dei sorgenti: gli stessi input producono la stessa lista di errori.
- Disponibile da
nextpdf/enterprise2.1.0; il contratto sopra riflette la 3.1.0.
Confine di distribuzione
Sezione intitolata “Confine di distribuzione”Questa pagina documenta solo il comportamento osservabile dall’esterno e la superficie API pubblica supportata. I percorsi di namespace interni, le classi helper, le tabelle dei meccanismi, i nomi dei file di runbook e i prefissi dei ticket sono fuori ambito.