Salta ai contenuti
getnextpdf.com

Enterprise edizione

PHPStan — Riferimento approfondito

  • Un’unica classe pubblica: EditionBoundaryRule, una regola PHPStan personalizzata sulle istruzioni use.
  • 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.editionBoundaryViolation sulla riga use incriminata.
  • 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.

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.

Installare il pacchetto, quindi registrare la regola nella configurazione di PHPStan.

Terminal window
composer require nextpdf/enterprise:^3
rules:
- NextPDF\Enterprise\PHPStan\EditionBoundaryRule
SimboloParametriComportamento predefinitoRestituisceSolleva o fallisce conNote
EditionBoundaryRuleNessuno (nessun argomento del costruttore)Regola PHPStan stateless sottoscritta alle istruzioni useNon solleva maifinal; implementa PHPStan\Rules\Rule su Use_
EditionBoundaryRule::getNodeType()NessunoDichiara il tipo di nodo AST a cui la regola è sottoscrittastring (Use_::class)Non solleva maiMetodo standard del contratto Rule di PHPStan
EditionBoundaryRule::processNode()Node $node, Scope $scopeConfronta ogni simbolo importato con i prefissi vietati per il namespace analizzatolist<IdentifierRuleError> (vuota quando conforme)Non solleva mai; le violazioni emergono come errori di regolaIdentificatore di errore nextpdf.editionBoundaryViolation
final class EditionBoundaryRule implements Rule
{
public function getNodeType(): string;
public function processNode(Node $node, Scope $scope): array;
}

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 analizzatoEtichetta di edizionePrefissi di import vietati
Sub-namespace NextPDF\*, esclusi Pro ed EnterpriseCoreNextPDF\Pro\, NextPDF\Enterprise\
NextPDF\Pro e NextPDF\Pro\*ProNextPDF\Enterprise\
NextPDF\Enterprise e NextPDF\Enterprise\*EnterpriseNessuno (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.

  • 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-namespace NextPDF\.
  • 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\Professional si classifica come Core, non Pro, e gli import al suo interno non generano mai falsi positivi contro il prefisso NextPDF\Pro\.
  • L’import dei nomi letterali NextPDF\Pro o NextPDF\Enterprise senza 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, function e const sotto un prefisso vietato vengono tutti riportati.
  • I riferimenti inline completamente qualificati scritti senza un’istruzione use sono fuori ambito. Preferire gli import affinché il confine sia imposto.
  • Le dichiarazioni use di gruppo vengono analizzate come il distinto tipo di nodo GroupUse e ricadono al di fuori della sottoscrizione Use_ 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.

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.

  • 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 è final e 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/enterprise 2.1.0; il contratto sopra riflette la 3.1.0.

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.