Enterprise edizione
PHPStan
In sintesi
Sezione intitolata “In sintesi”NextPDF Enterprise include una regola PHPStan personalizzata, EditionBoundaryRule, che segnala le importazioni use che attraversano il confine di edizione Core → Pro → Enterprise. È un controllo statico rivolto agli sviluppatori che riporta le violazioni; analizza le istruzioni di importazione e non garantisce la correttezza del codice.
Disponibilità e licenza
Sezione intitolata “Disponibilità e licenza”Questa funzionalità è inclusa in NextPDF Enterprise (nextpdf/enterprise) e si attiva con un envelope di licenza di tier Enterprise. È una regola PHPStan in fase di build, registrata tramite la propria configurazione PHPStan, quindi viene eseguita durante l’analisi statica e non ha alcun percorso in fase di esecuzione; il gate di licenza è il confine del pacchetto nextpdf/enterprise, senza alcun codice di capacità per-feature separato. Confronta le edizioni e ottieni una licenza.
Installazione
Sezione intitolata “Installazione”composer require nextpdf/enterprise:^3Registrare la regola nella propria configurazione PHPStan:
rules: - NextPDF\Enterprise\PHPStan\EditionBoundaryRulePanoramica concettuale
Sezione intitolata “Panoramica concettuale”La regola ispeziona ciascuna istruzione use e confronta il namespace che importa con il prefisso di namespace del simbolo importato. Impone un ordine di dipendenza monodirezionale:
- Il codice Core (
NextPDF\, escluse le sotto-namespace Pro ed Enterprise) non deve importare daNextPDF\Pro\*oNextPDF\Enterprise\*. - Il codice Pro (
NextPDF\Pro\*) non deve importare daNextPDF\Enterprise\*. - Il codice Enterprise (
NextPDF\Enterprise\*) è il tier superiore e può importare da uno qualsiasi di essi.
Quando un’importazione attraversa il confine, la regola riporta un errore con l’identificatore nextpdf.editionBoundaryViolation e un messaggio che indica il namespace che importa, il prefisso vietato ed etichette di edizione leggibili dall’uomo. Il controllo è puramente statico: legge il grafo delle importazioni al momento dell’analisi.
Perché funziona così
Sezione intitolata “Perché funziona così”La regola ragiona sulle istruzioni use al momento dell’analisi, non in fase di esecuzione, perché il confine di edizione è un invariante architetturale, non una decisione di runtime. Core, Pro ed Enterprise sono distribuiti come pacchetti separati, quindi un tier inferiore non deve mai dipendere da simboli assenti in un’installazione più piccola. Intercettare durante l’analisi statica un’importazione che attraversa il confine fa fallire la build prima che l’errore venga distribuito. L’alternativa è peggiore: la stessa importazione emerge più tardi come un errore fatale di classe mancante in una distribuzione solo Core. L’ordine è deliberatamente monodirezionale, Core → Pro → Enterprise, e rispecchia il modo in cui i pacchetti open-core si stratificano l’uno sull’altro. Enterprise rimane senza vincoli perché è il tier superiore e può riferirsi a ogni edizione al di sotto di esso.
Contesto di progettazione: Open core, senza vincoli di lock-in.
Superficie API
Sezione intitolata “Superficie API”| Classe | Responsabilità |
|---|---|
EditionBoundaryRule | Regola PHPStan sulle istruzioni use; riporta le violazioni del confine di edizione. |
La regola implementa il contratto standard Rule di PHPStan sul tipo di nodo Use_ ed emette errori sotto l’identificatore nextpdf.editionBoundaryViolation.
Esempio di codice — Avvio rapido
Sezione intitolata “Esempio di codice — Avvio rapido”# phpstan.neonincludes: - vendor/nextpdf/enterprise/phpstan.neon.distEsempio di codice — Produzione
Sezione intitolata “Esempio di codice — Produzione”# phpstan.neonrules: - NextPDF\Enterprise\PHPStan\EditionBoundaryRule
parameters: level: 9 paths: - srcUna violazione appare nell’output di PHPStan, per esempio, così: un’importazione Enterprise all’interno di codice Core è riportata come una violazione del confine di edizione sulla riga use incriminata, sotto nextpdf.editionBoundaryViolation.
Casi limite e insidie
Sezione intitolata “Casi limite e insidie”- La regola ragiona sul namespace del file analizzato e sul prefisso del simbolo importato. Il codice in un namespace diverso da
NextPDF\non è vincolato da questa regola. - I namespace Enterprise non sono soggetti a restrizioni per progettazione; la regola non segnala mai un file Enterprise per l’importazione di Pro o Core.
- La regola analizza le istruzioni
use. Un riferimento di classe completamente qualificato scritto inline senza unuseè fuori dall’ambito di questa regola; preferire le importazioni in modo che il confine venga imposto. - Il controllo è statico e di tipo consultivo: riporta le violazioni del confine. Non dimostra che il programma sia per il resto corretto.
Prestazioni
Sezione intitolata “Prestazioni”La regola viene eseguita per ciascuna istruzione use durante l’analisi PHPStan ed esegue confronti di prefisso di stringa. Il suo overhead è proporzionale al numero di istruzioni di importazione ed è trascurabile rispetto al tempo complessivo di analisi.
Note di sicurezza
Sezione intitolata “Note di sicurezza”Questa è una regola di analisi statica. Viene eseguita in fase di build all’interno di PHPStan, legge solo la struttura del sorgente e non ha alcun effetto in fase di esecuzione sui PDF generati.
Residenza dei dati e mitigazioni dei dati personali (PII)
Sezione intitolata “Residenza dei dati e mitigazioni dei dati personali (PII)”La regola elabora il codice sorgente al momento dell’analisi e non gestisce alcun documento né dato personale.
Telemetria sicura e sanificazione dei log
Sezione intitolata “Telemetria sicura e sanificazione dei log”L’output della regola è costituito da diagnostiche PHPStan. Contiene namespace e nomi di simboli dal proprio codice; trattare i log di analisi con la stessa cura del proprio sorgente.
Conformità
Sezione intitolata “Conformità”Non viene asserita alcuna conformità agli standard. Questa è una regola di tooling per sviluppatori che impone un vincolo architetturale interno (la stratificazione delle edizioni) nelle build a valle.
Comportamento in modalità FIPS
Sezione intitolata “Comportamento in modalità FIPS”Non applicabile; la regola non esegue alcuna operazione crittografica e non ha alcun percorso in fase di esecuzione.
Modello di minaccia
Sezione intitolata “Modello di minaccia”Non è un componente in fase di esecuzione. Lo scopo della regola è intercettare un errore architetturale — un’importazione che attraversa il confine di edizione — prima che venga distribuito, facendo fallire la fase di analisi statica.
Contratto di comportamento
Sezione intitolata “Contratto di comportamento”- La regola ispeziona ciascuna istruzione
usee impone un ordine di dipendenza monodirezionale: Core non deve importare Pro o Enterprise; Pro non deve importare Enterprise; Enterprise può importare uno qualsiasi. - Un’importazione che attraversa il confine è riportata sotto l’identificatore
nextpdf.editionBoundaryViolationcon il namespace che importa e il prefisso vietato. - Il codice in un namespace diverso da
NextPDF\non è vincolato da questa regola. - Un riferimento di classe completamente qualificato inline senza un
useè fuori dall’ambito di questa regola; preferire le importazioni in modo che il confine venga imposto.
Confine di pubblicazione
Sezione intitolata “Confine di pubblicazione”Questa pagina documenta esclusivamente il comportamento osservabile dall’esterno e la superficie API pubblica supportata. Percorsi di namespace interni, classi helper, tabelle di meccanismi, nomi di file di runbook e prefissi di ticket sono fuori ambito.
Fallback di Core
Sezione intitolata “Fallback di Core”NextPDF Core non include una regola PHPStan del confine di edizione. Un consumatore solo Core che vuole imporre la stratificazione delle edizioni nella propria build deve scrivere o procurarsi da sé una regola equivalente.
Fallback di Pro
Sezione intitolata “Fallback di Pro”NextPDF Pro non include la regola PHPStan del confine di edizione; fa parte esclusivamente del pacchetto nextpdf/enterprise. Una distribuzione solo Pro non ha alcuna componente Enterprise da cui registrare questa regola. Vedere la Panoramica di Enterprise per la superficie Enterprise.
Nota sul confine Enterprise
Sezione intitolata “Nota sul confine Enterprise”Il dettaglio del meccanismo interno rimane nella documentazione interna del repository sorgente ed è fuori ambito per questo manuale.
Confine di distribuzione
Sezione intitolata “Confine di distribuzione”Questa è una regola di analisi statica in fase di build. Viene eseguita all’interno di PHPStan durante l’analisi, legge solo la struttura del sorgente e non ha alcun effetto in fase di esecuzione sui PDF generati o su qualsiasi servizio distribuito. La sua registrazione e la scelta del livello PHPStan sono responsabilità dell’integratore.
Confine di conformità legale
Sezione intitolata “Confine di conformità legale”Questa pagina descrive una regola di analisi statica di tooling per sviluppatori. Non avanza alcuna garanzia di compliance, certificazione o correttezza sul proprio codice; riporta esclusivamente le violazioni del confine di importazione tra edizioni ed è di tipo consultivo. Non costituisce un parere legale. Valutare se la propria build soddisfa i propri obblighi architetturali o contrattuali è una responsabilità dell’utente.