Enterprise édition
PHPStan — Référence approfondie
En un coup d’œil
Section intitulée « En un coup d’œil »- Une seule classe publique :
EditionBoundaryRule, une règle PHPStan personnalisée portant sur les instructionsuse. - Impose l’ordre de dépendance unidirectionnel entre éditions. Core n’importe jamais Pro ni Enterprise. Pro n’importe jamais Enterprise.
- Les violations signalent l’identifiant
nextpdf.editionBoundaryViolationsur la ligneusefautive. - Uniquement au moment du build. La règle n’a aucun chemin d’exécution et aucun effet sur les PDF générés.
- Livrée dans
nextpdf/enterprise. L’enregistrement s’appuie sur la configuration PHPStan standard.
Disponibilité et licence
Section intitulée « Disponibilité et licence »Cette fonctionnalité est livrée dans NextPDF Enterprise (nextpdf/enterprise) et s’active avec une enveloppe de licence de niveau Enterprise. C’est une règle d’analyse statique au moment du build, sans chemin d’exécution : la frontière du paquet nextpdf/enterprise la contrôle, et elle ne porte aucun code de capacité distinct par fonctionnalité. Core et Pro n’en livrent pas d’équivalent. Comparer les éditions et obtenir une licence.
Surface d’API publique
Section intitulée « Surface d’API publique »Installe le paquet, puis enregistre la règle dans la configuration PHPStan.
composer require nextpdf/enterprise:^3rules: - NextPDF\Enterprise\PHPStan\EditionBoundaryRule| Symbole | Paramètres | Comportement par défaut | Retourne | Lève ou échoue avec | Notes |
|---|---|---|---|---|---|
EditionBoundaryRule | Aucun (pas d’arguments de constructeur) | Règle PHPStan sans état, abonnée aux instructions use | — | Ne lève jamais | final ; implémente PHPStan\Rules\Rule sur Use_ |
EditionBoundaryRule::getNodeType() | Aucun | Déclare le type de nœud AST auquel la règle s’abonne | string (Use_::class) | Ne lève jamais | Méthode standard du contrat Rule de PHPStan |
EditionBoundaryRule::processNode() | Node $node, Scope $scope | Vérifie chaque symbole importé au regard des préfixes interdits pour l’espace de noms analysé | list<IdentifierRuleError> (vide si conforme) | Ne lève jamais ; les violations remontent comme erreurs de règle | Identifiant d’erreur nextpdf.editionBoundaryViolation |
final class EditionBoundaryRule implements Rule{ public function getNodeType(): string;
public function processNode(Node $node, Scope $scope): array;}Contrat de comportement
Section intitulée « Contrat de comportement »EditionBoundaryRule implémente le contrat Rule standard de PHPStan sur le type de nœud Use_. Pour chaque instruction use, elle compare l’espace de noms du fichier analysé au préfixe d’espace de noms de chaque symbole importé et impose un ordre de dépendance unidirectionnel.
| Espace de noms analysé | Libellé d’édition | Préfixes d’import interdits |
|---|---|---|
Sous-espaces de noms NextPDF\*, hors Pro et Enterprise | Core | NextPDF\Pro\, NextPDF\Enterprise\ |
NextPDF\Pro et NextPDF\Pro\* | Pro | NextPDF\Enterprise\ |
NextPDF\Enterprise et NextPDF\Enterprise\* | Enterprise | Aucun (palier supérieur) |
Tout espace de noms hors NextPDF\ | — | Aucun (non contraint) |
Lorsqu’un import franchit la frontière, la règle signale une erreur sous l’identifiant nextpdf.editionBoundaryViolation, ancrée à la ligne de l’instruction use fautive. Le message nomme le symbole importé, l’espace de noms importateur, le préfixe interdit et des libellés d’édition lisibles. Chaque symbole importé produit au plus une erreur : la correspondance de préfixe s’arrête au premier préfixe interdit qui correspond.
La vérification est statique et indicative. Elle signale les violations de frontière sur les instructions d’import. Elle ne prouve pas que le programme analysé est par ailleurs correct.
Cas limites et modes de défaillance
Section intitulée « Cas limites et modes de défaillance »- Les espaces de noms hors
NextPDF\et les fichiers sans espace de noms ne produisent aucune erreur ; la règle retourne une liste vide. - Le code déclaré dans l’espace de noms racine exact
NextPDF(sans segment de sous-espace de noms) n’est pas contraint ; la détection de frontière correspond aux sous-espaces de nomsNextPDF\. - Les fichiers Enterprise ne sont jamais signalés pour l’import de symboles Pro ou Core (palier supérieur, par conception).
- La correspondance de préfixe respecte le séparateur. Un espace de noms tel que
NextPDF\Professionalse classe comme Core, pas Pro, et les imports qui en dépendent ne génèrent jamais de faux positif au regard du préfixeNextPDF\Pro\. - Importer les noms littéraux
NextPDF\ProouNextPDF\Enterprisesans segment supplémentaire n’est pas signalé ; seuls les symboles situés sous ces préfixes correspondent. - La règle ne filtre pas par type d’import : les imports de classe, de
functionet deconstsous un préfixe interdit sont tous signalés. - Les références pleinement qualifiées écrites en ligne sans instruction
usesont hors périmètre. Privilégie les imports pour que la frontière soit appliquée. - Les déclarations
usegroupées sont analysées comme le type de nœud distinctGroupUseet échappent à l’abonnementUse_de la règle ; les imports simples par symbole conservent la vérification de frontière. processNode()ne lève jamais ; toutes les issues remontent comme erreurs de règle PHPStan ou comme résultat vide.- Ce n’est pas un composant d’exécution. Il n’effectue aucune opération cryptographique, et le mode FIPS ne s’applique pas.
Conformité
Section intitulée « Conformité »Aucune conformité à une norme n’est revendiquée. Il s’agit d’une règle d’outillage pour développeurs qui impose une contrainte architecturale interne (l’empilement des éditions) dans les builds en aval. Elle implémente le contrat d’extension de règle PHPStan, qui est une API d’outil tiers, non une norme formelle. La règle ne donne aucune garantie de conformité, de certification ni de correction sur le code analysé ; elle signale uniquement les violations d’import de frontière entre éditions et reste indicative.
Notes de développement
Section intitulée « Notes de développement »- La règle s’exécute au sein de PHPStan pendant l’analyse, lit uniquement la structure du code source et n’a aucun effet sur les PDF générés ni sur un quelconque service déployé.
- L’enregistrement de la règle et le choix du niveau PHPStan restent à la charge de l’intégrateur.
- La classe est
finalet sans état, elle est donc sûre avec les workers d’analyse parallèle de PHPStan. - La sortie d’analyse est déterministe pour une arborescence source donnée : les mêmes entrées produisent la même liste d’erreurs.
- Disponible depuis
nextpdf/enterprise2.1.0 ; le contrat ci-dessus reflète la 3.1.0.
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 périmètre.