Enterprise édition
PHPStan
NextPDF Enterprise fournit une règle PHPStan personnalisée, EditionBoundaryRule, qui signale les imports use qui franchissent la frontière d’édition Core → Pro → Enterprise. C’est un contrôle statique destiné aux développeurs qui signale les violations ; il analyse les instructions d’import et ne garantit pas l’exactitude de ton code.
Disponibilité et licence
Section intitulée « Disponibilité et licence »Cette capacité est livrée dans NextPDF Enterprise (nextpdf/enterprise) et s’active avec une enveloppe de licence de palier Enterprise. C’est une règle PHPStan appliquée au moment du build, enregistrée via ta configuration PHPStan, si bien qu’elle s’exécute pendant l’analyse statique et n’a aucun chemin d’exécution à l’exécution ; le contrôle de licence est la frontière du paquet nextpdf/enterprise, sans code de capacité distinct par fonctionnalité. Comparer les éditions et obtenir une licence.
Installation
Section intitulée « Installation »composer require nextpdf/enterprise:^3Enregistre la règle dans ta configuration PHPStan :
rules: - NextPDF\Enterprise\PHPStan\EditionBoundaryRuleAperçu conceptuel
Section intitulée « Aperçu conceptuel »La règle inspecte chaque instruction use et compare l’espace de noms qui importe au préfixe d’espace de noms du symbole importé. Elle impose un ordre de dépendance à sens unique :
- Le code Core (
NextPDF\, à l’exclusion des sous-espaces de noms Pro et Enterprise) ne doit pas importer depuisNextPDF\Pro\*niNextPDF\Enterprise\*. - Le code Pro (
NextPDF\Pro\*) ne doit pas importer depuisNextPDF\Enterprise\*. - Le code Enterprise (
NextPDF\Enterprise\*) est le palier supérieur et peut importer depuis n’importe lequel d’entre eux.
Quand un import franchit la frontière, la règle signale une erreur avec l’identifiant nextpdf.editionBoundaryViolation et un message qui nomme l’espace de noms qui importe, le préfixe interdit et des libellés d’édition lisibles par un humain. Le contrôle est purement statique : il lit le graphe d’imports au moment de l’analyse.
Pourquoi cela fonctionne ainsi
Section intitulée « Pourquoi cela fonctionne ainsi »La règle raisonne sur les instructions use au moment de l’analyse, et non à l’exécution, parce que la frontière d’édition est un invariant architectural plutôt qu’une décision d’exécution. Core, Pro et Enterprise sont livrés en tant que paquets distincts, si bien qu’un palier inférieur ne doit jamais dépendre de symboles absents d’une installation plus réduite. Détecter un import qui franchit la frontière pendant l’analyse statique fait échouer le build avant que l’erreur ne soit livrée. L’alternative est pire : le même import ressurgit plus tard sous la forme d’une erreur fatale de classe manquante dans un déploiement Core uniquement. L’ordre est délibérément à sens unique, Core → Pro → Enterprise, à l’image de la façon dont les paquets open-core se superposent les uns aux autres. Enterprise reste sans contrainte parce qu’il est le palier supérieur et peut référencer chaque édition en dessous de lui.
Contexte de conception : Open core, sans verrouillage.
Surface d’API
Section intitulée « Surface d’API »| Classe | Responsabilité |
|---|---|
EditionBoundaryRule | Règle PHPStan sur les instructions use ; signale les violations de la frontière d’édition. |
La règle implémente le contrat PHPStan standard Rule sur le type de nœud Use_ et émet des erreurs sous l’identifiant nextpdf.editionBoundaryViolation.
Exemple de code — Démarrage rapide
Section intitulée « Exemple de code — Démarrage rapide »# phpstan.neonincludes: - vendor/nextpdf/enterprise/phpstan.neon.distExemple de code — Production
Section intitulée « Exemple de code — Production »# phpstan.neonrules: - NextPDF\Enterprise\PHPStan\EditionBoundaryRule
parameters: level: 9 paths: - srcUne violation apparaît dans la sortie PHPStan, par exemple : un import Enterprise au sein de code Core est signalé comme une violation de la frontière d’édition sur la ligne use fautive, sous nextpdf.editionBoundaryViolation.
Cas limites et pièges
Section intitulée « Cas limites et pièges »- La règle raisonne sur l’espace de noms du fichier analysé et sur le préfixe du symbole importé. Le code situé dans un espace de noms qui n’est pas
NextPDF\n’est pas contraint par cette règle. - Les espaces de noms Enterprise sont, par conception, sans restriction ; la règle ne signale jamais un fichier Enterprise pour avoir importé Pro ou Core.
- La règle analyse les instructions
use. Une référence de classe pleinement qualifiée écrite en ligne sansuseest hors du périmètre de cette règle ; préfère les imports pour que la frontière soit appliquée. - Le contrôle est statique et consultatif : il signale les violations de la frontière. Il ne prouve pas que ton programme est par ailleurs correct.
Performance
Section intitulée « Performance »La règle s’exécute par instruction use pendant l’analyse PHPStan et effectue des comparaisons de préfixes de chaînes. Son surcoût est proportionnel au nombre d’instructions d’import et reste négligeable au regard du temps d’analyse global.
Notes de sécurité
Section intitulée « Notes de sécurité »C’est une règle d’analyse statique. Elle s’exécute au moment du build au sein de PHPStan, lit uniquement la structure du source et n’a aucun effet à l’exécution sur les PDF générés.
Résidence des données et atténuations des données personnelles
Section intitulée « Résidence des données et atténuations des données personnelles »La règle traite du code source au moment de l’analyse et ne manipule aucune donnée de document ni donnée personnelle.
Télémétrie sûre et nettoyage des journaux
Section intitulée « Télémétrie sûre et nettoyage des journaux »La sortie de la règle est constituée de diagnostics PHPStan. Elle contient des espaces de noms et des noms de symboles issus de ton propre code ; traite les journaux d’analyse avec le même soin que ton source.
Conformité
Section intitulée « Conformité »Aucune conformité à une norme n’est revendiquée. C’est une règle d’outillage destinée aux développeurs qui impose une contrainte architecturale interne (la stratification des éditions) dans les builds en aval.
Comportement en mode FIPS
Section intitulée « Comportement en mode FIPS »Non applicable ; la règle n’effectue aucune opération cryptographique et n’a aucun chemin d’exécution à l’exécution.
Modèle de menace
Section intitulée « Modèle de menace »Ce n’est pas un composant d’exécution. L’objet de la règle est de détecter une erreur architecturale — un import franchissant la frontière d’édition — avant qu’elle ne soit livrée, en faisant échouer l’étape d’analyse statique.
Contrat de comportement
Section intitulée « Contrat de comportement »- La règle inspecte chaque instruction
useet impose un ordre de dépendance à sens unique : Core ne doit pas importer Pro ni Enterprise ; Pro ne doit pas importer Enterprise ; Enterprise peut importer n’importe lequel. - Un import qui franchit la frontière est signalé sous l’identifiant
nextpdf.editionBoundaryViolationavec l’espace de noms qui importe et le préfixe interdit. - Le code situé dans un espace de noms qui n’est pas
NextPDF\n’est pas contraint par cette règle. - Une référence de classe en ligne pleinement qualifiée sans
useest hors du périmètre de cette règle ; préfère les imports pour que la frontière soit appliquée.
Frontière de publication
Section intitulée « Frontière de publication »Cette page documente uniquement le comportement observable de l’extérieur et la surface d’API publique prise en charge. Les chemins d’espaces de noms internes, les classes utilitaires, les tables de mécanismes, les noms de fichiers de runbook et les préfixes de ticket sont hors du périmètre.
Repli Core
Section intitulée « Repli Core »NextPDF Core ne fournit pas de règle PHPStan de frontière d’édition. Un consommateur Core uniquement qui souhaite imposer la stratification des éditions dans son propre build doit écrire ou se procurer lui-même une règle équivalente.
Repli Pro
Section intitulée « Repli Pro »NextPDF Pro ne fournit pas la règle PHPStan de frontière d’édition ; elle fait partie du seul paquet nextpdf/enterprise. Un déploiement Pro uniquement n’a aucun composant Enterprise depuis lequel enregistrer cette règle. Voir l’aperçu Enterprise pour la surface Enterprise.
Note sur la frontière Enterprise
Section intitulée « Note sur la frontière Enterprise »Le détail interne du mécanisme reste dans la documentation interne du dépôt source et est hors du périmètre de ce manuel.
Frontière de déploiement
Section intitulée « Frontière de déploiement »C’est une règle d’analyse statique au moment du build. Elle s’exécute au sein de PHPStan pendant l’analyse, lit uniquement la structure du source et n’a aucun effet à l’exécution sur les PDF générés ni sur un service déployé. L’enregistrer et choisir le niveau PHPStan relèvent de la responsabilité de l’intégrateur.
Frontière de conformité légale
Section intitulée « Frontière de conformité légale »Cette page décrit une règle d’analyse statique d’outillage destinée aux développeurs. Elle ne fournit aucune garantie de conformité, de certification ou d’exactitude concernant ton code ; elle signale uniquement les violations d’import de la frontière d’édition et est consultative. Elle ne constitue pas un conseil juridique. Juger si ton build satisfait tes propres obligations architecturales ou contractuelles relève de ta responsabilité.