Ir al contenido
getnextpdf.com

Enterprise edición

PHPStan — Referencia detallada

  • Una sola clase pública: EditionBoundaryRule, una regla personalizada de PHPStan sobre las sentencias use.
  • Impone el orden unidireccional de dependencias entre ediciones. Core nunca importa Pro ni Enterprise. Pro nunca importa Enterprise.
  • Las infracciones informan del identificador nextpdf.editionBoundaryViolation en la línea use infractora.
  • 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.

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.

Instalar el paquete y, a continuación, registrar la regla en la configuración de PHPStan.

Ventana de terminal
composer require nextpdf/enterprise:^3
rules:
- NextPDF\Enterprise\PHPStan\EditionBoundaryRule
SímboloParámetrosComportamiento por defectoDevuelveLanza o falla conNotas
EditionBoundaryRuleNinguno (sin argumentos de constructor)Regla de PHPStan sin estado suscrita a las sentencias useNunca lanzafinal; implementa PHPStan\Rules\Rule sobre Use_
EditionBoundaryRule::getNodeType()NingunoDeclara el tipo de nodo del AST al que se suscribe la reglastring (Use_::class)Nunca lanzaMétodo estándar del contrato Rule de PHPStan
EditionBoundaryRule::processNode()Node $node, Scope $scopeComprueba cada símbolo importado frente a los prefijos prohibidos para el espacio de nombres analizadolist<IdentifierRuleError> (vacío cuando cumple)Nunca lanza; las infracciones se manifiestan como errores de reglaIdentificador de error nextpdf.editionBoundaryViolation
final class EditionBoundaryRule implements Rule
{
public function getNodeType(): string;
public function processNode(Node $node, Scope $scope): array;
}

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 analizadoEtiqueta de ediciónPrefijos de importación prohibidos
Subespacios de nombres NextPDF\*, excluyendo Pro y EnterpriseCoreNextPDF\Pro\, NextPDF\Enterprise\
NextPDF\Pro y NextPDF\Pro\*ProNextPDF\Enterprise\
NextPDF\Enterprise y NextPDF\Enterprise\*EnterpriseNinguno (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.

  • 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 nombres NextPDF\.
  • 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\Professional se clasifica como Core, no como Pro, y las importaciones bajo él nunca dan un falso positivo frente al prefijo NextPDF\Pro\.
  • Importar los nombres literales NextPDF\Pro o NextPDF\Enterprise sin 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, function y const bajo un prefijo prohibido informan todas.
  • Las referencias completamente cualificadas en línea escritas sin una sentencia use quedan fuera del alcance. Es preferible usar importaciones para que se imponga el límite.
  • Las declaraciones use de grupo se analizan como el tipo de nodo distinto GroupUse y quedan fuera de la suscripción Use_ 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.

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.

  • 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 final y 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/enterprise 2.1.0; el contrato anterior refleja la versión 3.1.0.

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.