Aller au contenu
getnextpdf.com

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.

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.

Fenêtre de terminal
composer require nextpdf/enterprise:^3

Enregistre la règle dans ta configuration PHPStan :

rules:
- NextPDF\Enterprise\PHPStan\EditionBoundaryRule

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 depuis NextPDF\Pro\* ni NextPDF\Enterprise\*.
  • Le code Pro (NextPDF\Pro\*) ne doit pas importer depuis NextPDF\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.

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.

ClasseResponsabilité
EditionBoundaryRuleRè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.

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

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

  • 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 sans use est 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.

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.

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.

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.

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.

Non applicable ; la règle n’effectue aucune opération cryptographique et n’a aucun chemin d’exécution à l’exécution.

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.

  • La règle inspecte chaque instruction use et 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.editionBoundaryViolation avec 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 use est hors du périmètre de cette règle ; préfère les imports pour que la frontière soit appliquée.

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.

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.

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.

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.

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.

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