Enterprise edición
PHPStan
De un vistazo
Sección titulada «De un vistazo»NextPDF Enterprise incluye una regla personalizada de PHPStan, EditionBoundaryRule, que señala las importaciones use que cruzan la frontera de edición Core → Pro → Enterprise. Es una comprobación estática orientada al desarrollador que notifica violaciones; analiza las sentencias de importación y no garantiza la corrección del código.
Disponibilidad y licencias
Sección titulada «Disponibilidad y licencias»Esta capacidad se incluye en NextPDF Enterprise (nextpdf/enterprise) y se activa con un sobre de licencia de nivel Enterprise. Es una regla de PHPStan en tiempo de compilación, registrada a través de la configuración de PHPStan, por lo que se ejecuta durante el análisis estático y no tiene ruta en tiempo de ejecución; la puerta de licencia es la frontera del paquete nextpdf/enterprise, sin ningún código de capacidad por característica independiente. Comparar ediciones y obtener una licencia.
Instalación
Sección titulada «Instalación»composer require nextpdf/enterprise:^3Registrar la regla en la configuración de PHPStan:
rules: - NextPDF\Enterprise\PHPStan\EditionBoundaryRuleDescripción conceptual
Sección titulada «Descripción conceptual»La regla inspecciona cada sentencia use y compara el espacio de nombres importador con el prefijo de espacio de nombres del símbolo importado. Impone un orden de dependencia unidireccional:
- El código de Core (
NextPDF\, excluyendo los subespacios de nombres de Pro y Enterprise) no debe importar deNextPDF\Pro\*ni deNextPDF\Enterprise\*. - El código de Pro (
NextPDF\Pro\*) no debe importar deNextPDF\Enterprise\*. - El código de Enterprise (
NextPDF\Enterprise\*) es el nivel superior y puede importar de cualquiera de ellos.
Cuando una importación cruza la frontera, la regla notifica un error con el identificador nextpdf.editionBoundaryViolation y un mensaje que nombra el espacio de nombres importador, el prefijo prohibido y etiquetas de edición legibles por humanos. La comprobación es puramente estática: lee el grafo de importación en tiempo de análisis.
Por qué funciona así
Sección titulada «Por qué funciona así»La regla razona sobre las sentencias use en tiempo de análisis, no en tiempo de ejecución, porque la frontera de edición es un invariante arquitectónico y no una decisión en tiempo de ejecución. Core, Pro y Enterprise se distribuyen como paquetes separados, de modo que un nivel inferior nunca debe depender de símbolos ausentes de una instalación más pequeña. Detectar una importación que cruza la frontera durante el análisis estático hace fallar la compilación antes de que el error se distribuya. La alternativa es peor: la misma importación aflora más tarde como un error fatal de clase ausente en un despliegue solo con Core. El orden es deliberadamente unidireccional, Core → Pro → Enterprise, reflejando cómo los paquetes de núcleo abierto se apilan unos sobre otros. Enterprise queda sin restricciones porque es el nivel superior y puede referenciar todas las ediciones inferiores.
Contexto de diseño: Núcleo abierto, sin dependencia forzada.
Superficie de la API
Sección titulada «Superficie de la API»| Clase | Responsabilidad |
|---|---|
EditionBoundaryRule | Regla de PHPStan sobre las sentencias use; notifica las violaciones de la frontera de edición. |
La regla implementa el contrato estándar Rule de PHPStan sobre el tipo de nodo Use_ y emite errores bajo el identificador nextpdf.editionBoundaryViolation.
Ejemplo de código — Inicio rápido
Sección titulada «Ejemplo de código — Inicio rápido»# phpstan.neonincludes: - vendor/nextpdf/enterprise/phpstan.neon.distEjemplo de código — Producción
Sección titulada «Ejemplo de código — Producción»# phpstan.neonrules: - NextPDF\Enterprise\PHPStan\EditionBoundaryRule
parameters: level: 9 paths: - srcUna violación aparece en la salida de PHPStan, por ejemplo, así: una importación de Enterprise dentro de código de Core se notifica como una violación de la frontera de edición en la línea use infractora, bajo nextpdf.editionBoundaryViolation.
Casos límite y aspectos a tener en cuenta
Sección titulada «Casos límite y aspectos a tener en cuenta»- La regla razona sobre el espacio de nombres del archivo analizado y el prefijo del símbolo importado. El código en un espacio de nombres que no sea
NextPDF\no está restringido por esta regla. - Los espacios de nombres de Enterprise no tienen restricciones por diseño; la regla nunca señala un archivo de Enterprise por importar de Pro o de Core.
- La regla analiza las sentencias
use. Una referencia de clase totalmente cualificada escrita en línea sin unusequeda fuera del alcance de esta regla; conviene preferir las importaciones para que la frontera se imponga. - La comprobación es estática y de carácter consultivo: notifica las violaciones de la frontera. No demuestra que el programa sea correcto por lo demás.
Rendimiento
Sección titulada «Rendimiento»La regla se ejecuta por cada sentencia use durante el análisis de PHPStan y realiza comparaciones de prefijo de cadena. Su sobrecarga es proporcional al número de sentencias de importación y es insignificante en relación con el tiempo total de análisis.
Notas de seguridad
Sección titulada «Notas de seguridad»Es una regla de análisis estático. Se ejecuta en tiempo de compilación dentro de PHPStan, lee únicamente la estructura del código fuente y no tiene ningún efecto en tiempo de ejecución sobre los PDF generados.
Residencia de datos y mitigaciones de PII
Sección titulada «Residencia de datos y mitigaciones de PII»La regla procesa el código fuente en tiempo de análisis y no maneja ningún dato de documento ni dato personal.
Telemetría segura y depuración de registros
Sección titulada «Telemetría segura y depuración de registros»La salida de la regla son diagnósticos de PHPStan. Contiene espacios de nombres y nombres de símbolos del propio código; conviene tratar los registros de análisis con el mismo cuidado que el código fuente.
Conformidad
Sección titulada «Conformidad»No se afirma ninguna conformidad con estándares. Es una regla de herramientas para desarrolladores que impone una restricción arquitectónica interna (las capas de edición) en las compilaciones posteriores.
Comportamiento en modo FIPS
Sección titulada «Comportamiento en modo FIPS»No aplicable; la regla no realiza ninguna operación criptográfica y no tiene ruta en tiempo de ejecución.
Modelo de amenazas
Sección titulada «Modelo de amenazas»No es un componente en tiempo de ejecución. El propósito de la regla es detectar un error arquitectónico —una importación que cruza la frontera de edición— antes de que se distribuya, haciendo fallar la etapa de análisis estático.
Contrato de comportamiento
Sección titulada «Contrato de comportamiento»- La regla inspecciona cada sentencia
usee impone un orden de dependencia unidireccional: Core no debe importar de Pro ni de Enterprise; Pro no debe importar de Enterprise; Enterprise puede importar de cualquiera. - Una importación que cruza la frontera se notifica bajo el identificador
nextpdf.editionBoundaryViolationcon el espacio de nombres importador y el prefijo prohibido. - El código en un espacio de nombres que no sea
NextPDF\no está restringido por esta regla. - Una referencia de clase totalmente cualificada en línea sin un
usequeda fuera del alcance de esta regla; conviene preferir las importaciones para que la frontera se imponga.
Límite de publicación
Sección titulada «Límite de publicación»Esta página documenta únicamente el comportamiento observable desde fuera y la superficie pública de API admitida. Las rutas internas de espacio de nombres, las clases auxiliares, las tablas de mecanismos, los nombres de archivo de runbook y los prefijos de ticket quedan fuera del alcance.
Alternativa de Core
Sección titulada «Alternativa de Core»NextPDF Core no incluye una regla de PHPStan de frontera de edición. Un consumidor solo con Core que quiera imponer las capas de edición en su propia compilación debe escribir o conseguir una regla equivalente por sí mismo.
Alternativa de Pro
Sección titulada «Alternativa de Pro»NextPDF Pro no incluye la regla de PHPStan de frontera de edición; forma parte únicamente del paquete nextpdf/enterprise. Un despliegue solo con Pro no tiene ningún componente de Enterprise desde el que registrar esta regla. Consultar la descripción general de Enterprise para conocer la superficie de Enterprise.
Nota sobre la frontera de Enterprise
Sección titulada «Nota sobre la frontera de Enterprise»El detalle del mecanismo interno permanece en la documentación interna del repositorio de código fuente y queda fuera del alcance de este manual.
Frontera de despliegue
Sección titulada «Frontera de despliegue»Es una regla de análisis estático en tiempo de compilación. Se ejecuta dentro de PHPStan durante el análisis, lee únicamente la estructura del código fuente y no tiene ningún efecto en tiempo de ejecución sobre los PDF generados ni sobre ningún servicio desplegado. Registrarla y elegir el nivel de PHPStan son responsabilidad del integrador.
Frontera de cumplimiento legal
Sección titulada «Frontera de cumplimiento legal»Esta página describe una regla de análisis estático de herramientas para desarrolladores. No ofrece ninguna garantía de cumplimiento, certificación ni corrección sobre el código; solo notifica las violaciones de importación de la frontera de edición y es de carácter consultivo. No constituye asesoramiento legal. Juzgar si la compilación cumple sus propias obligaciones arquitectónicas o contractuales es responsabilidad del integrador.