İçeriğe geç

NextPDF CodeIgniter entegrasyonu

Paketi 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.

Terminal window
composer require nextpdf/codeigniter

Bir 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.

CodeIgniter 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.

CodeIgniter 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ülenVarsayılan yaşam süresi
fontRegistryFontRegistryInterfacepaylaşılan
imageRegistryImageRegistrypaylaşılan
documentFactoryDocumentFactoryInterfacepaylaşılan
pdfDocumentDocumentyeni
pdfPdfyeni
tsaClient?TsaClientpaylaşılan
pdfSigner?SignerInterfaceyeni

İ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.

Paket 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 = 100
nextpdf.signature.enabled = true
nextpdf.signature.certificate = /etc/nextpdf/cert.pem

/integrations/codeigniter/configuration/ adresi, her anahtarı ve dizi geçersiz kılma kuralını belgeler.

CodeIgniter’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.

  • Barındıran ana uygulama Composer keşfini kapatırsa, nextpdf/codeigniter öğesini Config\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() ve Services::tsaClient(), imzalama ya da bir Zaman Damgalama Yetkilisi (TSA) uç noktası yapılandırılana kadar null döndürür. Bu bir hata değil; amaçlanan kontrollü düşüş davranışıdır.
  • 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).

NextPDF ç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>.

  • /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ı.