NextPDF CodeIgniter önyükleme ve keşfi
Bir bakışta
“Bir bakışta” başlıklı bölümCodeIgniter 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 Services keşfi nasıl çalışır
“CodeIgniter Services keşfi nasıl çalışır” başlıklı bölümCodeIgniter 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ğeritrue.$discoverInComposer— keşfi Composer paketlerine genişletir. Varsayılan değeritrue. Bu bayrak, çerçeveninnextpdf/codeigniterpaketini bulmasını sağlar.$composerPackages— Composer paket kümesi üzerinde isteğe bağlı bironly/excludefiltresi.$aliases— keşfe katılan öğe türleri. Çerçevenin varsayılanıservicesveregistrarsöğ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).
Önyükleme sırası
“Önyükleme sırası” başlıklı bölüm- Composer otomatik yüklemesi. Composer, PSR-4 eşlemesini ve
filesotomatik yükleme girdilerini kaydeder. Bu aşamadasrc/CodeIgniter/Helpers/pdf_helper.phpyardımcı dosyasını yükler. - Çerçeve önyüklemesi. CodeIgniter,
Config\Modulesdosyasını okur. Keşif etkinleştirildiğinde, keşfedilen öğe listesini Composer paketleri arasında oluşturur. - Registrar keşfi. Çerçeve,
Registrarsınıflarını toplar. PaketinRegistrar::Autoload()işlevi,pdfyardımcısını CodeIgniter’ın yardımcı yükleyicisine tanıtır. - İlk çağrıda hizmet çözümlemesi. Hizmet fabrikaları gerektiğinde çalışır.
service('pdf')veyaServices::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.
Kapsayıcı bağlamaları
“Kapsayıcı bağlamaları” başlıklı bölümCodeIgniter 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:
| Hizmet | Varsayılan olarak paylaşılan | Notlar |
|---|---|---|
fontRegistry | evet | Önce ısıtılır, sonra kilitlenir. |
imageRegistry | evet | Sınırlı, en uzun süredir kullanılmayan (LRU) önbellek. |
documentFactory | evet | Durumsuz. |
pdfDocument | hayır | Her çağrıda yeni. |
pdf | hayır | Her çağrıda yeni. |
tsaClient | evet | null, herhangi bir Zaman Damgası Yetkilisi (TSA) URL’si yapılandırılmadığında. |
pdfSigner | hayır | null, 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.
Yapılandırma çözümleme sırası
“Yapılandırma çözümleme sırası” başlıklı bölümEtkin yapılandırma şu sırayla çözümlenir:
- Paket varsayılanları:
NextPDF\CodeIgniter\Config\NextPdfiçinde. - Varsa, paket sınıfını genişleten bir
Config\NextPdfuygulama sınıfı. CodeIgniter, paket varsayılanı yerine bu sınıfı yükler. - Ortam geçersiz kılmaları:
BaseConfigtarafından uygulanır ve küçük harfle yazılmış kısa sınıf adınextpdfile 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.
Tanılama
“Tanılama” başlıklı bölümcomposer dump-autoload— yükseltme sonrasında PSR-4 eşlemesini vefilesotomatik yükleme listesini yeniden oluşturur.- Keşfi hızlıca test etmek için
Services::pdfDocument(false)çağrısı yapan ve birDocumentdöndüğünü doğrulayan bir denetleyici kullanın. - Yardımcı dosyanın kayıtlı olduğunu doğrulamak için
vendor/composer/autoload_files.phpdosyasını inceleyin. - Hataları nedenlerle eşleştirmek için /integrations/codeigniter/troubleshooting/ sayfasına bakın.
Uygunluk
“Uygunluk” başlıklı bölüm- 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).
Ayrıca bakınız
“Ayrıca bakınız” başlıklı bölüm- /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ı.