Salta ai contenuti
getnextpdf.com

Enterprise edizione

PHPStan

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.

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.

Terminal window
composer require nextpdf/enterprise:^3

Registrare la regola nella propria configurazione PHPStan:

rules:
- NextPDF\Enterprise\PHPStan\EditionBoundaryRule

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 da NextPDF\Pro\* o NextPDF\Enterprise\*.
  • Il codice Pro (NextPDF\Pro\*) non deve importare da NextPDF\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.

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.

ClasseResponsabilità
EditionBoundaryRuleRegola 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.

# phpstan.neon
includes:
- vendor/nextpdf/enterprise/phpstan.neon.dist
# phpstan.neon
rules:
- NextPDF\Enterprise\PHPStan\EditionBoundaryRule
parameters:
level: 9
paths:
- src

Una 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.

  • 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 un use è 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.

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.

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.

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.

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.

Non applicabile; la regola non esegue alcuna operazione crittografica e non ha alcun percorso in fase di esecuzione.

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.

  • La regola ispeziona ciascuna istruzione use e 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.editionBoundaryViolation con 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.

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.

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.

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.

Il dettaglio del meccanismo interno rimane nella documentazione interna del repository sorgente ed è fuori ambito per questo manuale.

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.

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.