Zum Inhalt springen

NextPDF für CodeIgniter 4 installieren

Installieren Sie das Paket mit Composer. CodeIgniter 4 erkennt die Services-Klasse und die Helper-Funktionen automatisch. Sie müssen nichts manuell registrieren.

Das Paket deklariert diese Beschränkungen in composer.json; diese Datei ist die maßgebliche Quelle. Die folgende Tabelle gibt dieselben Beschränkungen wieder.

AbhängigkeitBeschränkungHinweise
PHP>=8.4 <9.0Das Paket ist für PHP 8.4 ausgelegt.
nextpdf/core^3.0 || ^5.2Die NextPDF-Engine.
codeigniter4/framework^4.6Verifiziert gegen CodeIgniter 4.7.0.
ext-mbstringzur Laufzeit erforderlichWird einmal pro Prozess validiert.
ext-zlibzur Laufzeit erforderlichWird einmal pro Prozess validiert.

Optionale Pakete, die unter suggest deklariert sind:

PaketFügt hinzu
nextpdf/artisanChrome-CDP-HTML-Renderer (beim Dokument-Build automatisch erkannt).
nextpdf/premiumNextPDF Pro und Enterprise: Signieren, PDF/A, Factur-X.
codeigniter4/queueAsynchrone PDF-Generierung über GeneratePdfJob.

Installieren Sie das Paket:

Terminal-Fenster
composer require nextpdf/codeigniter

Composer löst nextpdf/core und codeigniter4/framework gemäß den obigen Beschränkungen auf. Sie müssen weder einen Service-Provider noch ein Bundle noch eine Bootstrap-Datei bearbeiten.

CodeIgniter 4 durchsucht Composer-Pakete nach Framework-Elementen, wenn Config\Modules::$discoverInComposer auf true steht; das ist der Framework-Standard. Das Paket liefert eine NextPDF\CodeIgniter\Config\Services-Klasse mit. Die Klasse liegt unter dem PSR-4-Namensraum NextPDF\CodeIgniter\, der auf src/CodeIgniter/ abgebildet wird. Das PSR-4-Autoloading von Composer wandelt diesen voll qualifizierten Klassennamen in einen Dateipfad um. Der Top-Level-Namensraum ist erforderlich (PSR-4 §x1.x2.p5, modal MUST). Das Namensraum-Präfix wird auf das Basisverzeichnis abgebildet, sodass die Klasse zu ihrer Datei aufgelöst wird (PSR-4 §x1.x3).

Der Composer-files-Autoload-Eintrag des Pakets (src/CodeIgniter/Helpers/pdf_helper.php) registriert die beiden Helper-Funktionen pdf() und pdf_document(). Der Registrar des Pakets meldet außerdem den pdf-Helper beim Helper-Loader von CodeIgniter an. Die vollständige Abfolge finden Sie unter /integrations/codeigniter/boot-and-discovery/.

Prüfen Sie, ob Composer das Paket aufgelöst hat:

Terminal-Fenster
composer show nextpdf/codeigniter

Prüfen Sie, ob CodeIgniter die Services-Klasse erkannt hat. Rufen Sie in einem beliebigen Controller oder in einer kurzen php spark-Route einen Service auf und prüfen Sie den Typ:

<?php
declare(strict_types=1);
use NextPDF\CodeIgniter\Config\Services;
use NextPDF\Core\Document;
$document = Services::pdfDocument(false);
// $document is a fresh NextPDF\Core\Document instance.
\assert($document instanceof Document);

Wenn Services::pdfDocument() ein Document zurückgibt, funktioniert die Discovery. Wenn der Aufruf null zurückgibt, wurde die Discovery nicht ausgeführt. Siehe /integrations/codeigniter/troubleshooting/.

  • Wenn die Host-Anwendung Config\Modules::$discoverInComposer auf false setzt, fügen Sie nextpdf/codeigniter zur Liste $composerPackages['only'] hinzu. Andernfalls überspringt die Discovery das Paket.
  • Ein veralteter Composer-Autoloader kann die Services-Klasse verbergen. Führen Sie nach einem Upgrade composer dump-autoload aus.
  • Das Paket deklariert codeigniter4/queue nur als Entwicklungsabhängigkeit. Eine Produktionsanwendung, die GeneratePdfJob abschickt, muss codeigniter4/queue selbst als Voraussetzung angeben.

Installieren Sie über HTTPS von Packagist. Pinnen Sie die aufgelösten Versionen in composer.lock. Das Paket fügt zur Installationszeit keine Skripte hinzu. Siehe /integrations/codeigniter/security-and-operations/.

  • Die Composer-Discovery hängt vom PSR-4-Autoloading ab.
  • /integrations/codeigniter/overview/ — was das Paket bereitstellt.
  • /integrations/codeigniter/quickstart/ — erstes PDF in einem Controller.
  • /integrations/codeigniter/configuration/ — Konfigurationsschlüssel und Overrides.
  • /integrations/codeigniter/boot-and-discovery/ — die Discovery-Abfolge im Detail.