İçeriğe geç

NextPDF CodeIgniter önyükleme ve keşfi

CodeIgniter 4, Composer paket keşfi aracılığıyla paketin Services sınıfını, yardımcı işlevlerini ve registrar’ını keşfeder. Bu sayfa, bu sırayı ve onu denetleyen yapılandırmayı açıklar.

CodeIgniter 4, bir hizmeti çözümlemek için keşfedilen her Config\Services sınıfında, istenen hizmet adıyla eşleşen statik bir yöntem arar. Uygulamanız service('pdf') çağrısı yaptığında çerçeve, keşfedilen ilk Services sınıfını — yani bir pdf yöntemi bildiren sınıfı — bulur ve ardından bu yöntemi çağırır.

Keşif, Config\Modules tarafından yönetilir:

  • $enabled — otomatik keşif için birincil anahtar. Varsayılan değeri true.
  • $discoverInComposer — keşfi Composer paketlerine genişletir. Varsayılan değeri true. Bu bayrak, çerçevenin nextpdf/codeigniter paketini bulmasını sağlar.
  • $composerPackages — Composer paket kümesi üzerinde isteğe bağlı bir only / exclude filtresi.
  • $aliases — keşfe katılan öğe türleri. Çerçevenin varsayılanı services ve registrars öğelerini içerir; bu paket de her ikisini kullanır.

Paket sınıfı NextPDF\CodeIgniter\Config\Services olarak adlandırılır. Composer, PHP Standards Recommendation 4 (PSR-4) öneki olan NextPDF\CodeIgniter\ ifadesini src/CodeIgniter/ dizinine eşler. Tam nitelikli bir sınıf adının üst düzey bir ad alanına sahip olması gerekir (PSR-4 §x1.x2.p5, MUST kipi). Ad alanı öneki temel dizine eşlenir; bu sayede sınıf kendi dosyasına çözümlenir (PSR-4 §x1.x3).

  1. Composer otomatik yüklemesi. Composer, PSR-4 eşlemesini ve files otomatik yükleme girdilerini kaydeder. Bu aşamada src/CodeIgniter/Helpers/pdf_helper.php yardımcı dosyasını yükler.
  2. Çerçeve önyüklemesi. CodeIgniter, Config\Modules dosyasını okur. Keşif etkinleştirildiğinde, keşfedilen öğe listesini Composer paketleri arasında oluşturur.
  3. Registrar keşfi. Çerçeve, Registrar sınıflarını toplar. Paketin Registrar::Autoload() işlevi, pdf yardımcısını CodeIgniter’ın yardımcı yükleyicisine tanıtır.
  4. İlk çağrıda hizmet çözümlemesi. Hizmet fabrikaları gerektiğinde çalışır. service('pdf') veya Services::pdf() öğesine yapılan ilk çağrı fabrikayı çalıştırır. Paylaşılan hizmetler, süreç boyunca hizmet konumlandırıcısında önbelleğe alınır.

CodeIgniter 4 bir PSR-11 kapsayıcısı sunmaz. Bunun yerine, Services sınıfındaki statik fabrika yöntemleri bağlama işlevi görür. Her yöntem bir bool $getShared parametresi alır:

HizmetVarsayılan olarak paylaşılanNotlar
fontRegistryevetÖnce ısıtılır, sonra kilitlenir.
imageRegistryevetSınırlı, en uzun süredir kullanılmayan (LRU) önbellek.
documentFactoryevetDurumsuz.
pdfDocumenthayırHer çağrıda yeni.
pdfhayırHer çağrıda yeni.
tsaClientevetnull, herhangi bir Zaman Damgası Yetkilisi (TSA) URL’si yapılandırılmadığında.
pdfSignerhayırnull, imzalama devre dışı bırakıldığında.

Paylaşılan örnekler, süreç boyunca CodeIgniter’ın BaseService örnek önbelleğinde tutulur. Çerçevenin test düzeneği bu önbelleği BaseService::reset() ile temizler ve paketin işlevsel testleri durumlar arasında bu sıfırlamaya dayanır.

Etkin yapılandırma şu sırayla çözümlenir:

  1. Paket varsayılanları: NextPDF\CodeIgniter\Config\NextPdf içinde.
  2. Varsa, paket sınıfını genişleten bir Config\NextPdf uygulama sınıfı. CodeIgniter, paket varsayılanı yerine bu sınıfı yükler.
  3. Ortam geçersiz kılmaları: BaseConfig tarafından uygulanır ve küçük harfle yazılmış kısa sınıf adı nextpdf ile anahtarlanır (noktalı iç içe anahtarlar veya tam nitelikli sınıf adı biçimi).

Uygulamanın yapılandırma genişletme dosyası tek bir sınıf bildirir ve yan etki oluşturmaz. Bu yapı, bir dosyanın ya sembol bildirmesi ya da yan etkili mantık çalıştırması, ancak ikisini birden yapmaması yönündeki PSR-1 beklentisiyle uyumlu kalır (PSR-1 §x1.x1.p3). Bunun bilinçli olarak yan etki oluşturan karşılığı yardımcı dosyadır. Genel pdf() ve pdf_document() işlevlerini bildirir ve her biri bir function_exists denetimiyle korunduğundan iki kez yüklenmesi güvenlidir.

  • composer dump-autoload — yükseltme sonrasında PSR-4 eşlemesini ve files otomatik yükleme listesini yeniden oluşturur.
  • Keşfi hızlıca test etmek için Services::pdfDocument(false) çağrısı yapan ve bir Document döndüğünü doğrulayan bir denetleyici kullanın.
  • Yardımcı dosyanın kayıtlı olduğunu doğrulamak için vendor/composer/autoload_files.php dosyasını inceleyin.
  • Hataları nedenlerle eşleştirmek için /integrations/codeigniter/troubleshooting/ sayfasına bakın.
  • Tam nitelikli sınıf adı, üst düzey bir ad alanı gerektirir (PSR-4 Autoloader §x1.x2.p5).
  • Ad alanı önekinden temel dizin sınıf yoluna eşleme (PSR-4 Autoloader §x1.x3).
  • Bir dosya ya sembol bildirir ya da yan etkilere neden olur — yardımcı dosya tasarımı (PSR-1 Basic Coding Standard §x1.x1.p3).
  • /integrations/codeigniter/integration/ — entegrasyon başvurusu ve duman testi.
  • /integrations/codeigniter/install/ — keşif kurulumunu yapın ve doğrulayın.
  • /integrations/codeigniter/overview/ — tam API yüzeyi.
  • /integrations/codeigniter/troubleshooting/ — keşif hata modları.