Arranque y descubrimiento de NextPDF en CodeIgniter
De un vistazo
Sección titulada «De un vistazo»CodeIgniter 4 descubre automáticamente la clase Services del paquete, sus funciones helper y el registrar mediante el descubrimiento de paquetes de Composer. Esta página explica la secuencia exacta y la configuración que la controla.
Cómo funciona el descubrimiento de Services en CodeIgniter
Sección titulada «Cómo funciona el descubrimiento de Services en CodeIgniter»CodeIgniter 4 resuelve un servicio examinando cada clase Config\Services descubierta para encontrar un método estático cuyo nombre coincida con el servicio solicitado. Así, cuando la aplicación llama a service('pdf'), el framework encuentra la primera clase Services descubierta que declara un método pdf y lo invoca.
El descubrimiento se rige por Config\Modules:
$enabled: conmutador principal del descubrimiento automático. Valor predeterminadotrue.$discoverInComposer: amplía el descubrimiento a los paquetes de Composer. Valor predeterminadotrue. Esta marca permite que el framework encuentrenextpdf/codeigniter.$composerPackages: un filtro opcionalonly/excludepara el conjunto de paquetes de Composer.$aliases: los tipos de elementos que participan en el descubrimiento. El valor predeterminado del framework incluyeservicesyregistrars, ambos usados por este paquete.
La clase del paquete es NextPDF\CodeIgniter\Config\Services. Composer asigna el prefijo PSR-4 NextPDF\CodeIgniter\ a src/CodeIgniter/. Un nombre de clase totalmente cualificado debe incluir un espacio de nombres de nivel superior (PSR-4 §x1.x2.p5, modal MUST). El prefijo del espacio de nombres se asigna al directorio base, por lo que la clase queda resuelta en su archivo (PSR-4 §x1.x3).
Secuencia de arranque
Sección titulada «Secuencia de arranque»- Autoload de Composer. Composer registra el mapa PSR-4 y las entradas de autoload
files. El archivo helpersrc/CodeIgniter/Helpers/pdf_helper.phpse carga en este paso. - Bootstrap del framework. CodeIgniter lee
Config\Modules. Cuando el descubrimiento está habilitado, construye la lista de elementos descubiertos en los paquetes de Composer. - Descubrimiento de registrars. El framework recopila las clases
Registrar. ElRegistrar::Autoload()del paquete registra el helperpdfen el cargador de helpers de CodeIgniter. - Resolución del servicio en la primera llamada. La resolución de las factorías de servicios es diferida. La primera llamada a
service('pdf')oServices::pdf()ejecuta la factoría. Los servicios compartidos se guardan en caché en el localizador mientras dura el proceso.
Enlaces del contenedor
Sección titulada «Enlaces del contenedor»CodeIgniter 4 no incluye un contenedor PSR-11. Los «enlaces» son los métodos estáticos de factoría de la clase Services. Cada método acepta un parámetro bool $getShared:
| Servicio | Compartido de forma predeterminada | Notas |
|---|---|---|
fontRegistry | sí | Se precalienta y luego se bloquea. |
imageRegistry | sí | Caché LRU acotada. |
documentFactory | sí | Sin estado. |
pdfDocument | no | Nueva instancia en cada llamada. |
pdf | no | Nueva instancia en cada llamada. |
tsaClient | sí | null si no hay URL de TSA. |
pdfSigner | no | null si la firma está deshabilitada. |
Las instancias compartidas residen en la caché de instancias de BaseService de CodeIgniter durante el proceso. El entorno de pruebas del framework limpia esa caché mediante BaseService::reset(), y las pruebas funcionales del paquete dependen de ese reinicio entre casos.
Orden de resolución de la configuración
Sección titulada «Orden de resolución de la configuración»La configuración efectiva se resuelve en este orden:
- Los valores predeterminados del paquete en
NextPDF\CodeIgniter\Config\NextPdf. - Una clase de la aplicación
Config\NextPdfque extiende la clase del paquete, si existe. CodeIgniter la carga en lugar del valor predeterminado del paquete. - Sobrescrituras de entorno aplicadas por
BaseConfig, indexadas por el nombre corto de clase en minúsculasnextpdf(claves anidadas con puntos, o la forma de clase totalmente cualificada).
El archivo de extensión de configuración de la aplicación declara una sola clase y no ejecuta efectos secundarios. Así se mantiene alineado con la expectativa de PSR-1 de que un archivo o bien declare símbolos o bien ejecute lógica con efectos secundarios, pero no ambas cosas (PSR-1 §x1.x1.p3). El archivo helper es la contraparte diseñada deliberadamente para tener efectos secundarios. Declara las funciones globales pdf() y pdf_document(), y cada una está protegida por una comprobación con function_exists para que una carga doble sea segura.
Diagnóstico
Sección titulada «Diagnóstico»composer dump-autoload: reconstruye el mapa PSR-4 y la lista de autoloadfilesdespués de una actualización.- La comprobación de descubrimiento más rápida es un controlador que llama a
Services::pdfDocument(false)y comprueba que devuelve unDocument. - Inspeccionar
vendor/composer/autoload_files.phppara confirmar que el archivo helper está registrado. - Consultar /integrations/codeigniter/troubleshooting/ para ver la correspondencia entre fallos y causas.
Conformidad
Sección titulada «Conformidad»- Un nombre de clase totalmente cualificado requiere un espacio de nombres de nivel superior (PSR-4 Autoloader §x1.x2.p5).
- Asignación del prefijo del espacio de nombres a la ruta de clase del directorio base (PSR-4 Autoloader §x1.x3).
- Un archivo declara símbolos o causa efectos secundarios: el diseño del archivo helper (PSR-1 Basic Coding Standard §x1.x1.p3).
Véase también
Sección titulada «Véase también»- /integrations/codeigniter/integration/: la referencia de integración y la prueba de humo.
- /integrations/codeigniter/install/: instalación y verificación del descubrimiento.
- /integrations/codeigniter/overview/: la superficie completa de la API.
- /integrations/codeigniter/troubleshooting/: modos de fallo del descubrimiento.