Intégration NextPDF pour CodeIgniter
Installe le paquet : CodeIgniter 4 s’occupe du câblage pour toi. Cette page sert de référence pour ce câblage. Elle couvre la découverte, le modèle de liaisons, la publication de la configuration et un test de fumée en une seule méthode qui prouve que l’intégration fonctionne.
Installation
Section intitulée « Installation »composer require nextpdf/codeigniterTu n’as pas à modifier de fournisseur de services ni de fichier d’amorçage. Consulte /integrations/codeigniter/install/ pour les contraintes de version vérifiées.
Démarrage / découverte automatique
Section intitulée « Démarrage / découverte automatique »CodeIgniter 4 trouve le paquet grâce à la découverte de paquets Composer. C’est le cas lorsque Config\Modules::$discoverInComposer vaut true, la valeur par défaut du framework. Le préfixe PSR-4 NextPDF\CodeIgniter\ correspond à src/CodeIgniter/. Grâce à cette correspondance, le framework résout NextPDF\CodeIgniter\Config\Services vers son fichier (PSR-4 §x1.x3). /integrations/codeigniter/boot-and-discovery/ documente la séquence complète et les propriétés Config\Modules qui la régissent.
Liaisons du conteneur
Section intitulée « Liaisons du conteneur »CodeIgniter 4 ne fournit aucun conteneur PSR-11. PSR-11 §1.3 déconseille le patron service-locator (modalité SHOULD NOT). Le paquet suit la convention de localisateur du framework, mais la garde minimale. Chaque liaison correspond à une unique fabrique statique nommée, dotée d’un paramètre bool $getShared.
| Nom du service | Renvoie | Durée de vie par défaut |
|---|---|---|
fontRegistry | FontRegistryInterface | partagé |
imageRegistry | ImageRegistry | partagé |
documentFactory | DocumentFactoryInterface | partagé |
pdfDocument | Document | neuf |
pdf | Pdf | neuf |
tsaClient | ?TsaClient | partagé |
pdfSigner | ?SignerInterface | neuf |
Résous les services depuis l’un ou l’autre point d’entrée — ils sont équivalents :
<?php
declare(strict_types=1);
use NextPDF\CodeIgniter\Config\Services;
$a = Services::pdf(false); // direct$b = \service('pdf'); // helper → Services::pdf()Les helpers globaux pdf() et pdf_document() ne sont que de fines enveloppes autour de Services::pdf(false) et Services::pdfDocument(false).
Publier la configuration
Section intitulée « Publier la configuration »La configuration du paquet réside dans NextPDF\CodeIgniter\Config\NextPdf, un BaseConfig non final. Deux méthodes prises en charge permettent de la surcharger :
1. Étends la classe (typée, versionnée). Crée app/Config/NextPdf.php :
<?php
declare(strict_types=1);
namespace Config;
use NextPDF\CodeIgniter\Config\NextPdf as BaseNextPdf;
final class NextPdf extends BaseNextPdf{ public int $imageCacheMb = 100;}CodeIgniter charge ta classe d’application à la place de la valeur par défaut du paquet.
2. Surcharge avec .env (par environnement). Le préfixe est le nom de classe court en minuscules, nextpdf :
nextpdf.imageCacheMb = 100nextpdf.signature.enabled = truenextpdf.signature.certificate = /etc/nextpdf/cert.pem/integrations/codeigniter/configuration/ documente chaque clé et la règle de surcharge des tableaux.
Test de fumée du fournisseur de services / du bundle
Section intitulée « Test de fumée du fournisseur de services / du bundle »CodeIgniter n’a aucune classe de fournisseur de services ni de bundle à tester. À la place, le test de fumée équivalent vérifie deux choses : que la découverte a résolu les services, et que les durées de vie se comportent comme spécifié. Le test ci-dessous est une action de contrôleur exécutable qui reflète les assertions fonctionnelles du paquet.
<?php
declare(strict_types=1);
namespace App\Controllers;
use CodeIgniter\HTTP\ResponseInterface;use NextPDF\CodeIgniter\Config\Services;use NextPDF\CodeIgniter\Libraries\Pdf;use NextPDF\Core\Document;
final class NextPdfSmokeController extends BaseController{ public function check(): ResponseInterface { // Discovery resolved the services. $document = Services::pdfDocument(false); $library = Services::pdf(false);
// Documents are fresh per call (no cross-request leakage). $freshIsolated = Services::pdfDocument(false) !== $document;
// Registries are shared singletons. $registrySingleton = Services::fontRegistry() === Services::fontRegistry();
// Optional services degrade to null without Premium / TSA config. $signerOptional = Services::pdfSigner(false) === null;
$ok = $document instanceof Document && $library instanceof Pdf && $freshIsolated && $registrySingleton && $signerOptional;
return $this->response ->setStatusCode($ok ? 200 : 500) ->setJSON([ 'discovery' => $document instanceof Document, 'document_fresh_per_call' => $freshIsolated, 'registry_shared' => $registrySingleton, 'signer_optional_null' => $signerOptional, ]); }}Associe une route à cette action, puis appelle-la. Une réponse 200 avec tous les indicateurs à true prouve l’intégration. Chaque assertion ici correspond à un comportement vérifié dans la suite de tests fonctionnels du paquet.
Cas limites et pièges
Section intitulée « Cas limites et pièges »- Si l’application hôte désactive la découverte Composer, ajoute
nextpdf/codeigniteràConfig\Modules::$composerPackages['only']. Services::pdfDocument(true)renvoie un document partagé. Il n’existe que pour la réinitialisation des tests. Ne demande jamais le document partagé dans du code de requête ni dans un job.Services::pdfSigner()etServices::tsaClient()renvoientnulltant que la signature ou une URL TSA n’est pas configurée. Il s’agit d’un comportement de repli volontaire, pas d’un échec.
Conformité
Section intitulée « Conformité »- Correspondance entre classe et chemin pour la découverte de modules (PSR-4 Autoloader §x1.x3).
- Recommandation sur le service-locator pour le modèle de liaisons (PSR-11 Container §1.3).
Contexte commercial
Section intitulée « Contexte commercial »Le cœur de NextPDF est sous licence Apache-2.0. Les services Pro et Enterprise apparaissent sur la même surface Services une fois installés. Le paquet CodeIgniter expose les méthodes de service correspondantes. Chacune renvoie null tant que le paquet Premium correspondant n’est pas installé. Voir </get-license/?intent=codeigniter>.
Voir aussi
Section intitulée « Voir aussi »- /integrations/codeigniter/boot-and-discovery/ — rouages internes de la découverte.
- /integrations/codeigniter/install/ — contraintes de version et vérification.
- /integrations/codeigniter/quickstart/ — premier PDF.
- /integrations/codeigniter/production-usage/ — contrôleurs câblés par injection et job de file d’attente.
- /integrations/codeigniter/configuration/ — chaque clé de configuration.