Enterprise edición
PHPStan — Referencia detallada
En resumen
Sección titulada «En resumen»- Una sola clase pública:
EditionBoundaryRule, una regla personalizada de PHPStan sobre las sentenciasuse. - Impone el orden unidireccional de dependencias entre ediciones. Core nunca importa Pro ni Enterprise. Pro nunca importa Enterprise.
- Las infracciones informan del identificador
nextpdf.editionBoundaryViolationen la líneauseinfractora. - Solo en tiempo de compilación. La regla no tiene ninguna ruta en tiempo de ejecución ni efecto sobre los PDF generados.
- Se incluye en
nextpdf/enterprise. El registro utiliza la configuración estándar de PHPStan.
Disponibilidad y licencias
Sección titulada «Disponibilidad y licencias»Esta funcionalidad se incluye en NextPDF Enterprise (nextpdf/enterprise) y se activa con un sobre de licencia de nivel Enterprise. Es una regla de análisis estático en tiempo de compilación sin ninguna ruta en tiempo de ejecución: el límite del paquete nextpdf/enterprise la controla y no lleva ningún código de capacidad por funcionalidad independiente. Core y Pro no incluyen un equivalente. Comparar ediciones y obtener una licencia.
Superficie de API pública
Sección titulada «Superficie de API pública»Instalar el paquete y, a continuación, registrar la regla en la configuración de PHPStan.
composer require nextpdf/enterprise:^3rules: - NextPDF\Enterprise\PHPStan\EditionBoundaryRule| Símbolo | Parámetros | Comportamiento por defecto | Devuelve | Lanza o falla con | Notas |
|---|---|---|---|---|---|
EditionBoundaryRule | Ninguno (sin argumentos de constructor) | Regla de PHPStan sin estado suscrita a las sentencias use | — | Nunca lanza | final; implementa PHPStan\Rules\Rule sobre Use_ |
EditionBoundaryRule::getNodeType() | Ninguno | Declara el tipo de nodo del AST al que se suscribe la regla | string (Use_::class) | Nunca lanza | Método estándar del contrato Rule de PHPStan |
EditionBoundaryRule::processNode() | Node $node, Scope $scope | Comprueba cada símbolo importado frente a los prefijos prohibidos para el espacio de nombres analizado | list<IdentifierRuleError> (vacío cuando cumple) | Nunca lanza; las infracciones se manifiestan como errores de regla | Identificador de error nextpdf.editionBoundaryViolation |
final class EditionBoundaryRule implements Rule{ public function getNodeType(): string;
public function processNode(Node $node, Scope $scope): array;}Contrato de comportamiento
Sección titulada «Contrato de comportamiento»EditionBoundaryRule implementa el contrato estándar Rule de PHPStan sobre el tipo de nodo Use_. Para cada sentencia use, compara el espacio de nombres del archivo analizado con el prefijo del espacio de nombres de cada símbolo importado e impone un orden unidireccional de dependencias.
| Espacio de nombres analizado | Etiqueta de edición | Prefijos de importación prohibidos |
|---|---|---|
Subespacios de nombres NextPDF\*, excluyendo Pro y Enterprise | Core | NextPDF\Pro\, NextPDF\Enterprise\ |
NextPDF\Pro y NextPDF\Pro\* | Pro | NextPDF\Enterprise\ |
NextPDF\Enterprise y NextPDF\Enterprise\* | Enterprise | Ninguno (nivel superior) |
Cualquier espacio de nombres fuera de NextPDF\ | — | Ninguno (sin restricciones) |
Cuando una importación cruza el límite, la regla informa de un error bajo el identificador nextpdf.editionBoundaryViolation, anclado a la línea de la sentencia use infractora. El mensaje nombra el símbolo importado, el espacio de nombres importador, el prefijo prohibido y etiquetas de edición legibles por humanos. Cada símbolo importado produce como máximo un error: la comparación de prefijos se detiene en el primer prefijo prohibido que coincide.
La comprobación es estática y consultiva. Informa de infracciones de límite en las sentencias de importación. No demuestra que el programa analizado sea correcto por lo demás.
Casos límite y modos de fallo
Sección titulada «Casos límite y modos de fallo»- Los espacios de nombres fuera de
NextPDF\y los archivos sin espacio de nombres no producen errores; la regla devuelve una lista vacía. - El código declarado en el espacio de nombres raíz exacto
NextPDF(sin ningún segmento de subespacio de nombres) no está restringido; la detección de límites coincide con los subespacios de nombresNextPDF\. - Los archivos Enterprise nunca se marcan por importar símbolos de Pro o Core (nivel superior, por diseño).
- La comparación de prefijos tiene en cuenta el separador. Un espacio de nombres como
NextPDF\Professionalse clasifica como Core, no como Pro, y las importaciones bajo él nunca dan un falso positivo frente al prefijoNextPDF\Pro\. - Importar los nombres literales
NextPDF\ProoNextPDF\Enterprisesin ningún segmento adicional no se marca; solo coinciden los símbolos bajo esos prefijos. - La regla no filtra por tipo de importación: las importaciones de clase,
functionyconstbajo un prefijo prohibido informan todas. - Las referencias completamente cualificadas en línea escritas sin una sentencia
usequedan fuera del alcance. Es preferible usar importaciones para que se imponga el límite. - Las declaraciones
usede grupo se analizan como el tipo de nodo distintoGroupUsey quedan fuera de la suscripciónUse_de la regla; las importaciones simples por símbolo mantienen la comprobación del límite. processNode()nunca lanza; todos los resultados se manifiestan como errores de regla de PHPStan o un resultado vacío.- No es un componente en tiempo de ejecución. No realiza operaciones criptográficas y el modo FIPS no es aplicable.
Conformidad
Sección titulada «Conformidad»No se reclama conformidad con ninguna norma. Se trata de una regla de herramientas para desarrolladores que impone una restricción arquitectónica interna (la estratificación de ediciones) en las compilaciones posteriores. Implementa el contrato de extensión de reglas de PHPStan, que es una API de una herramienta de terceros, no una norma formal. La regla no ofrece ninguna garantía de cumplimiento, certificación o corrección sobre el código analizado; solo informa de infracciones de importación del límite entre ediciones y es consultiva.
Notas de desarrollo
Sección titulada «Notas de desarrollo»- La regla se ejecuta dentro de PHPStan durante el análisis, lee únicamente la estructura del código fuente y no tiene ningún efecto sobre los PDF generados ni sobre ningún servicio desplegado.
- Registrar la regla y elegir el nivel de PHPStan siguen siendo responsabilidad del integrador.
- La clase es
finaly sin estado, por lo que es segura bajo los trabajadores de análisis en paralelo de PHPStan. - La salida del análisis es determinista para un árbol de código fuente dado: las mismas entradas producen la misma lista de errores.
- Disponible desde
nextpdf/enterprise2.1.0; el contrato anterior refleja la versión 3.1.0.
Límite de publicación
Sección titulada «Límite de publicación»Esta página documenta únicamente el comportamiento observable externamente y la superficie de API pública compatible. Las rutas internas de espacios de nombres, las clases auxiliares, las tablas de mecanismos, los nombres de archivo de runbook y los prefijos de tickets quedan fuera del alcance.