NextPDF Symfony'de önyükleme ve keşif
Bir bakışta
“Bir bakışta” başlıklı bölümÇekirdek, NextPdfBundle paketini kaydeder. Paketin bağımlılık enjeksiyonu (DI) uzantısı, services.php dosyasını yükler ve yapılandırma ağacını konteyner parametrelerine çözümler. Ardından bir derleyici geçişi, isteğe bağlı uzantıları ve yazı tipi ön ısıtmasını bağlar.
Symfony Flex paketi nasıl algılar
“Symfony Flex paketi nasıl algılar” başlıklı bölümPaketin composer.json dosyası bir otomatik kayıt ipucu bildirir:
{ "extra": { "symfony": { "bundles": { "NextPDF\\Symfony\\NextPdfBundle": "all" } } }}Symfony Flex kullanılan bir uygulamada bu ipucu, NextPDF\Symfony\NextPdfBundle sınıfını her ortam için config/bundles.php dosyasına ekler (all). Flex yoksa paketi config/bundles.php dosyasına elle eklemeniz gerekir. Symfony, paket kayıt modelini şu adreste belgeler: (https://symfony.com/doc/current/bundles.html). Paket sınıfları, PHP Standart Önerisi (PSR)-4 öneki NextPDF\Symfony\ altında otomatik yüklenir ve src/Symfony/ dizinine eşlenir. Bir PSR-4 otomatik yükleyici, ad alanı önekini bu temel dizine eşler (PSR-4 §2).
Önyükleme sırası
“Önyükleme sırası” başlıklı bölümPaket kaynağına göre doğrulanmış önyükleme sırası:
- Çekirdek paketleri kaydeder.
Kernel::registerBundles(),config/bundles.phpdosyasını okur veNextPDF\Symfony\NextPdfBundlesınıfının örneğini oluşturur; bu sınıfSymfony\Component\HttpKernel\Bundle\Bundlesınıfını genişletir. - Paket derlemesi.
NextPdfBundle::build(), üst sınıf yöntemini çağırır ve ardından bir derleyici geçişi kaydeder:OptionalExtensionPass.NextPdfBundle::getPath(), paket kökünü döndürür. - Uzantı yükleme. DI uzantısı
NextPDF\Symfony\DependencyInjection\NextPdfExtension(takma adnextpdf),processConfiguration()yönteminiConfigurationsınıfı üzerinden çalıştırır. Çözümlenen değerlerinextpdf.*konteyner parametreleri olarak saklar, ardındanconfig/services.phpdosyasını birPhpFileLoaderaracılığıyla yükler. - Gerekli uzantı koruması.
NextPdfExtension::load(),ext-mbstringveext-zlibuzantılarının varlığını doğrulayarak tamamlanır ve yoklarsa hızlıca başarısız olur. - Derleyici geçişi çalışır. Konteyner derlemesi sırasında
OptionalExtensionPass::process(),PdfFactoryüzerinde uzantı kullanılabilirliği bayraklarını yapılandırır, imzalayıcıyı ve zaman damgası yetkilisi (TSA) istemcisini koşullu olarak kaydeder ve yazı tipi kayıt defteri ön ısıtmasını ve kilitlemesini planlar. - Konteyner derlenir ve önbelleğe alınır. Symfony, derlenmiş konteyneri yazar.
cache:warmup, bu adımı trafik uygulamaya ulaşmadan önce gerçekleştirir.
Derleyici geçişleri
“Derleyici geçişleri” başlıklı bölümPaket, tam olarak tek geçiş olan NextPDF\Symfony\DependencyInjection\Compiler\OptionalExtensionPass geçişini NextPdfBundle::build() içinde kaydeder. Varsayılan (eniyileme öncesi) geçiş grubunda çalışır. Geçiş dört adım yürütür. Her adım korumalıdır; girdileri yoksa hiçbir şey yapmaz:
- Uzantı bayrakları —
setArtisanAvailable(...)vesetProAvailable(...)yöntem çağrılarınıPdfFactorytanımına ekler. Değerler, Artisan tarayıcı fabrikası ve Pro PDF/A sınıfı için derleme zamanıclass_existsyoklamalarından gelir. - İmzalayıcı kaydı —
nextpdf.signaturemevcut olduğunda,enabledtrue olduğunda ve bir sertifika ayarlandığında, temel B-B profili için bir sertifika bilgisi fabrikası ve bir imzalayıcı hizmeti kaydeder. - TSA istemcisi —
nextpdf.tsabir URL’ye sahip olduğunda bir TSA istemci hizmeti kaydeder. - Yazı tipi ön ısıtması —
warmup()velock()yöntem çağrılarını,nextpdf.preload_fontsboş olmadığında yazı tipi kayıt defteri tanımına ekler.
Konteyner bağlamaları
“Konteyner bağlamaları” başlıklı bölümconfig/services.php, hizmetleri tanımlar. nextpdf.document belge hizmeti (takma adları NextPDF\Contracts\PdfDocumentInterface ve NextPDF\Core\Document) paylaşımsızdır: her çözümleme yeni bir belge döndürür. Bu davranışa PSR-11 açıkça izin verir; bir kimlik için ardışık get() çağrıları farklı değerler döndürebilir (PSR-11 §1.1.2). Yazı tipi kayıt defteri paylaşılır ve ön ısıtmadan sonra kilitlenir. Görüntü kayıt defteri paylaşılır ve kernel.reset olarak etiketlenir. Tam tablo /integrations/symfony/configuration/ içinde yer alır.
Yapılandırma çözümleme sırası
“Yapılandırma çözümleme sırası” başlıklı bölüm- Yerleşik varsayılanlar şuradan gelir:
Configuration(getConfigTreeBuilder()). - Uygulama geçersiz kılmaları şu konumdadır:
config/packages/nextpdf.yaml; ortam geçersiz kılmaları da şunun altındadır:config/packages/<env>/. - Symfony,
%kernel.*%parametre yer tutucularını çözümler. Örneğinfonts_path, varsayılan olarak%kernel.project_dir%/resources/fontsdeğerini alır. NextPdfExtension::load(), birleştirilmiş sonucunextpdf.*konteyner parametrelerine yazar; bu parametrelerservices.phpve derleyici geçişi tarafından tüketilir.
Geçersiz değerler, 1–2. adımda Symfony InvalidConfigurationException hatasıyla sonuçlanır.
Tanılama
“Tanılama” başlıklı bölümphp bin/console debug:container nextpdfphp bin/console debug:config nextpdfphp bin/console cache:clearİlk komut, kayıtlı hizmetleri listeler. İkinci komut, birleştirilmiş yapılandırmayı yazdırır. Üçüncü komut, konteyneri yeniden oluşturur ve derleme zamanı uzantı yoklamalarını yeniden çalıştırır.
Uygunluk
“Uygunluk” başlıklı bölümHer satır, bu sayfadaki normatif bir savı temsil eder ve geçit kontrollü standart geliştirme kuruluşu (SDO) külliyatından gelen tam 64 onaltılık karakterli bir reference_id değerine sabitlenmiştir. Kaynak bilgisi (külliyat bildirimi, alma taşıması) _sidecars/rag-citations.yaml içinde yer alır.
| Spesifikasyon | Madde | reference_id | Sav |
|---|---|---|---|
| PSR-11 | psr_11_container#1.1.2.p3.b | Konteyner çözümlemesi çağrıdan çağrıya farklı olabilir | |
| PSR-4 | psr_4_autoload#x1.x2.p5 | Ad alanı önekinden temel dizine eşleme |
Ayrıca bakınız
“Ayrıca bakınız” başlıklı bölüm- /integrations/symfony/integration/ — uçtan uca bağlama referansı.
- /integrations/symfony/install/ — kurulum ve kayıt.
- /integrations/symfony/configuration/ — tam yapılandırma ağacı ve hizmet tablosu.
- /integrations/symfony/overview/ — yetenek özeti.