NextPDF CodeIgniter entegrasyonu
Bir bakışta
“Bir bakışta” başlıklı bölümPaketi kurun; CodeIgniter 4 paketi sizin yerinize devreye alır. Bu sayfayı, devreye almanın doğru gerçekleştiğini doğrulamak için kullanın: keşif, bağlama modeli, yapılandırma yayımlama ve entegrasyonun çalıştığını kanıtlayan tek metotlu bir duman testi.
Kurulum
“Kurulum” başlıklı bölümcomposer require nextpdf/codeigniterBir servis sağlayıcısını düzenlemeniz veya bir bootstrap dosyasını değiştirmeniz gerekmez. Doğrulanmış sürüm kısıtlamaları için /integrations/codeigniter/install/ adresine bakın.
Önyükleme / otomatik keşif
“Önyükleme / otomatik keşif” başlıklı bölümCodeIgniter 4, Config\Modules::$discoverInComposer değeri çerçevenin varsayılanı olan true ise paketi Composer paket keşfi üzerinden bulur. PHP Standard Recommendation 4 (PSR-4) öneki NextPDF\CodeIgniter\, src/CodeIgniter/ dizinine eşlenir; böylece çerçeve, NextPDF\CodeIgniter\Config\Services sınıfını ilgili dosyaya çözümleyebilir (PSR-4 §x1.x3). /integrations/codeigniter/boot-and-discovery/ adresi, tam işlem sırasını ve bunu yöneten Config\Modules özelliklerini belgeler.
Konteyner bağlamaları
“Konteyner bağlamaları” başlıklı bölümCodeIgniter 4, bir PSR-11 konteyneri ile birlikte gelmez. PSR-11 §1.3, servis bulucu deseninin kullanılmamasını önerir (SHOULD NOT kipi). Paket, çerçevenin bulucu kuralına uyar ve bu modeli olabildiğince yalın tutar. Her bağlama, bir bool $getShared parametresine sahip, adlandırılmış bir statik fabrikadır.
| Servis adı | Döndürülen | Varsayılan yaşam süresi |
|---|---|---|
fontRegistry | FontRegistryInterface | paylaşılan |
imageRegistry | ImageRegistry | paylaşılan |
documentFactory | DocumentFactoryInterface | paylaşılan |
pdfDocument | Document | yeni |
pdf | Pdf | yeni |
tsaClient | ?TsaClient | paylaşılan |
pdfSigner | ?SignerInterface | yeni |
İki giriş noktasından herhangi birini kullanın; eşdeğerdirler:
<?php
declare(strict_types=1);
use NextPDF\CodeIgniter\Config\Services;
$a = Services::pdf(false); // direct$b = \service('pdf'); // helper → Services::pdf()Hem pdf() hem de pdf_document() genel yardımcıları, sırasıyla Services::pdf(false) ve Services::pdfDocument(false) çağrılarını sarmalar.
Yapılandırmayı yayımlama
“Yapılandırmayı yayımlama” başlıklı bölümPaket yapılandırması NextPDF\CodeIgniter\Config\NextPdf içinde yer alır; bu sınıf, final olmayan bir BaseConfig sınıfıdır. Bunu desteklenen iki yoldan biriyle geçersiz kılabilirsiniz:
1. Sınıfı genişletin (tipli ve sürüm denetimine tabi). app/Config/NextPdf.php dosyasını oluşturun:
<?php
declare(strict_types=1);
namespace Config;
use NextPDF\CodeIgniter\Config\NextPdf as BaseNextPdf;
final class NextPdf extends BaseNextPdf{ public int $imageCacheMb = 100;}CodeIgniter, paket varsayılanı yerine uygulamanızdaki sınıfı yükler.
2. .env ile geçersiz kılın (ortam başına). Önek olarak küçük harfli kısa sınıf adı olan nextpdf değerini kullanın:
nextpdf.imageCacheMb = 100nextpdf.signature.enabled = truenextpdf.signature.certificate = /etc/nextpdf/cert.pem/integrations/codeigniter/configuration/ adresi, her anahtarı ve dizi geçersiz kılma kuralını belgeler.
Servis sağlayıcı / paket duman testi
“Servis sağlayıcı / paket duman testi” başlıklı bölümCodeIgniter’da test edilecek bir servis sağlayıcı veya paket sınıfı yoktur. Eşdeğer duman testini iki şeyi denetlemek için kullanın: keşfin servisleri çözümlemiş olması ve yaşam sürelerinin belirtildiği gibi davranması. Aşağıdaki denetleyici eylemi çalıştırılabilir niteliktedir ve paketin kendi işlevsel doğrulamalarını yansıtır.
<?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, ]); }}Bu eyleme bir rota eşleyin, ardından bu rotaya istek gönderin. Durum kodu 200 olan ve tüm bayrakları true olarak ayarlanmış bir yanıt, entegrasyonu kanıtlar. Buradaki her doğrulama, paketin işlevsel test kümesinde doğrulanmış bir davranışla eşleşir.
Sınır durumları ve dikkat edilecek noktalar
“Sınır durumları ve dikkat edilecek noktalar” başlıklı bölüm- Barındıran ana uygulama Composer keşfini kapatırsa,
nextpdf/codeigniteröğesiniConfig\Modules::$composerPackages['only']içine ekleyin. Services::pdfDocument(true)paylaşılan bir belge döndürür. Yalnızca test sıfırlaması için vardır. İstek veya iş kodunda paylaşılan belgeyi asla istemeyin.Services::pdfSigner()veServices::tsaClient(), imzalama ya da bir Zaman Damgalama Yetkilisi (TSA) uç noktası yapılandırılana kadarnulldöndürür. Bu bir hata değil; amaçlanan kontrollü düşüş davranışıdır.
Uygunluk
“Uygunluk” başlıklı bölüm- Modül keşfi için sınıf yolu eşlemesi (PSR-4 Autoloader §x1.x3).
- Bağlama modeli için servis bulucu rehberliği (PSR-11 Container §1.3).
Ticari bağlam
“Ticari bağlam” başlıklı bölümNextPDF çekirdeği Apache-2.0 lisanslıdır. Pro veya Enterprise’ı kurduktan sonra, bunların servisleri aynı Services yüzeyinde görünür. CodeIgniter paketi, eşleşen servis yöntemlerini açığa çıkarır. Her yöntem, eşleşen Premium paketi kurana kadar null döndürür. </get-license/? adresine bakın.intent=codeigniter>.
Ayrıca bkz.
“Ayrıca bkz.” başlıklı bölüm- /integrations/codeigniter/boot-and-discovery/ — keşfin iç işleyişi.
- /integrations/codeigniter/install/ — sürüm kısıtlamaları ve doğrulama.
- /integrations/codeigniter/quickstart/ — ilk PDF.
- /integrations/codeigniter/production-usage/ — bağımlılık enjeksiyonu üzerinden devreye alınan denetleyiciler ve kuyruk işi.
- /integrations/codeigniter/configuration/ — her yapılandırma anahtarı.