NextPDF CodeIgniter-integratie
In een oogopslag
Sectie met titel “In een oogopslag”Installeer het pakket; CodeIgniter 4 koppelt het automatisch voor je in. Gebruik deze pagina om te controleren of de integratie goed is aangesloten: discovery, het bindingsmodel, configuratiepublicatie en een smoke-test met één methode die aantoont dat de integratie werkt.
Installeren
Sectie met titel “Installeren”composer require nextpdf/codeigniterJe hoeft geen serviceprovider te bewerken en ook geen bootstrap-bestand aan te passen. Zie /integrations/codeigniter/install/ voor de geverifieerde versie-eisen.
Opstart / auto-discovery
Sectie met titel “Opstart / auto-discovery”CodeIgniter 4 vindt het pakket via Composer package discovery wanneer Config\Modules::$discoverInComposer op true staat, de standaardinstelling van het framework. De PHP Standard Recommendation 4 (PSR-4)-prefix NextPDF\CodeIgniter\ wordt gemapt naar src/CodeIgniter/, zodat het framework NextPDF\CodeIgniter\Config\Services naar het bijbehorende bestand kan resolven (PSR-4 §x1.x3). /integrations/codeigniter/boot-and-discovery/ documenteert de volledige volgorde en de eigenschappen van Config\Modules die dit bepalen.
Container-bindings
Sectie met titel “Container-bindings”CodeIgniter 4 wordt niet geleverd met een PSR-11-container. PSR-11 §1.3 raadt het service-locatorpatroon af (modaal SHOULD NOT). Het pakket volgt de locatorconventie van het framework en houdt die zo beperkt mogelijk. Elke binding is een benoemde statische factory met een bool $getShared-parameter.
| Servicenaam | Retourneert | Standaardlevensduur |
|---|---|---|
fontRegistry | FontRegistryInterface | gedeeld |
imageRegistry | ImageRegistry | gedeeld |
documentFactory | DocumentFactoryInterface | gedeeld |
pdfDocument | Document | vers |
pdf | Pdf | vers |
tsaClient | ?TsaClient | gedeeld |
pdfSigner | ?SignerInterface | vers |
Gebruik een van deze twee ingangspunten; ze zijn equivalent:
<?php
declare(strict_types=1);
use NextPDF\CodeIgniter\Config\Services;
$a = Services::pdf(false); // direct$b = \service('pdf'); // helper → Services::pdf()De globale helpers pdf() en pdf_document() zijn wrappers rond Services::pdf(false) en Services::pdfDocument(false).
Configuratie publiceren
Sectie met titel “Configuratie publiceren”De pakketconfiguratie staat in NextPDF\CodeIgniter\Config\NextPdf, een niet-finale BaseConfig. Je kunt deze op een van de twee ondersteunde manieren overschrijven:
1. Breid de klasse uit (getypeerd, versiebeheerd). Maak 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 laadt je applicatieklasse in plaats van de standaardklasse van het pakket.
2. Overschrijven met .env (per omgeving). Gebruik de korte klassenaam in kleine letters, nextpdf, als prefix:
nextpdf.imageCacheMb = 100nextpdf.signature.enabled = truenextpdf.signature.certificate = /etc/nextpdf/cert.pem/integrations/codeigniter/configuration/ documenteert elke sleutel en de regel voor het overschrijven van arrays.
Smoke-test voor serviceprovider / bundle
Sectie met titel “Smoke-test voor serviceprovider / bundle”CodeIgniter heeft geen serviceprovider of bundle-klasse die je kunt testen. Gebruik de equivalente smoke-test om twee dingen te controleren: of discovery de services heeft geresolved en of de levensduren zich gedragen zoals gespecificeerd. De onderstaande controlleractie is uitvoerbaar en weerspiegelt de functionele assertions van het pakket zelf.
<?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, ]); }}Koppel een route aan deze actie en roep die vervolgens op. Een 200-respons met alle vlaggen op true toont aan dat de integratie werkt. Elke assertion hier komt overeen met gedrag dat in de functionele testsuite van het pakket is geverifieerd.
Randgevallen en valkuilen
Sectie met titel “Randgevallen en valkuilen”- Als de hostapplicatie Composer-discovery uitschakelt, voeg dan
nextpdf/codeignitertoe aanConfig\Modules::$composerPackages['only']. Services::pdfDocument(true)retourneert een gedeeld document. Deze optie bestaat alleen voor het resetten van tests. Vraag het gedeelde document nooit op in request- of jobcode.Services::pdfSigner()enServices::tsaClient()retournerennulltotdat ondertekening of een Time-Stamping Authority (TSA)-endpoint is geconfigureerd. Dit is bewuste graceful degradation, geen fout.
Conformiteit
Sectie met titel “Conformiteit”- Class-path-mapping voor module-discovery (PSR-4 Autoloader §x1.x3).
- Service-locatorrichtlijn voor het bindingsmodel (PSR-11 Container §1.3).
Commerciële context
Sectie met titel “Commerciële context”NextPDF core valt onder Apache-2.0. Nadat je Pro of Enterprise hebt geïnstalleerd, verschijnen de bijbehorende services op dezelfde Services-API. Het CodeIgniter-pakket stelt de bijbehorende servicemethoden beschikbaar. Elke methode retourneert null totdat je het bijbehorende Premium-pakket installeert. Zie </get-license/?intent=codeigniter>.
Zie ook
Sectie met titel “Zie ook”- /integrations/codeigniter/boot-and-discovery/ — interne werking van discovery.
- /integrations/codeigniter/install/ — versiebeperkingen en verificatie.
- /integrations/codeigniter/quickstart/ — eerste PDF.
- /integrations/codeigniter/production-usage/ — via dependency injection ingekoppelde controllers en de queue-job.
- /integrations/codeigniter/configuration/ — elke configuratiesleutel.