NextPDF backport önyükleme ve keşif
Derleme araçları, çalışma zamanı bağımlılığı DEĞİLDİR. Bu sayfa, derleyicinin bir bakımcı ya da sürekli tümleştirme (CI) ana makinesinde nasıl başlatıldığını açıklar. Aşağı akış uygulamaları bu kodu hiçbir zaman yüklemez.
Bir bakışta
“Bir bakışta” başlıklı bölümDerleyici; çerçeve, bağımlılık enjeksiyonu kapsayıcısı ya da hizmet sağlayıcı otomatik keşfi kullanmaz. Bunun yerine PHP komut satırı arabirimi (CLI) betikleri require_once ve Composer’ın PSR-4 otomatik yükleyicisiyle bağlanır. Burada “keşif” terimi iki belirli anlam taşır: birleştirme aşamasının hangi kaynak depolarını okuduğu ve düzenleyicinin hedef için Rector yapılandırmasını nasıl seçtiği.
Derleme hattına genel bakış
“Derleme hattına genel bakış” başlıklı bölümDüzenleyici, scripts/build.php betiğidir. Derlemeyi başlatır, ardından beş aşamayı sırayla çalıştırır. Her aşamada bir geçit denetimi uygulanır; bu nedenle ilk başarısızlık derlemeyi durdurur:
- Kaynakları birleştir — kaynak depolarını tek bir ağaca kopyalar.
- Rector sürüm düşürmesini çalıştır — PHP 8.1 için tek geçiş, PHP 7.4 için ise iki geçiş ve ek düzeltmeler çalıştırır.
composer.jsonoluştur — oluşturulan paket bildiriminireplaceeşlemesiyle birlikte yazar.- Statik varlıkları kopyala — lisansı ve oluşturulan bir değişiklik günlüğünü kopyalar.
- Çıktıyı doğrula — üretilen PHP dosyalarını sayar; yetkili söz dizimi geçidi daha sonra CI’da çalışır.
Şunlara göre doğrulanmıştır: scripts/build.php (run(), step()). Kural seçimi ayrıntıları için /integrations/backport/configuration/ adresine, CI geçidi için /integrations/backport/production-usage/ adresine bakın.
Kaynak modüllerin keşfi
“Kaynak modüllerin keşfi” başlıklı bölümKaynak keşfi bildirim güdümlü değildir. scripts/merge-sources.php, depo adına göre anahtarlanan ve hedefe göre seçilen sabit bir eşleme kullanır.
PHP 8.1 hedefi için eşleme nextpdf (çekirdek), nextpdf-Artisan, nextpdf-compat-legacy, nextpdf-Laravel, nextpdf-Symfony, nextpdf-CodeIgniter ve Pro dahil edildiğinde nextpdf-Pro depolarını içerir. PHP 7.4 hedefi için eşleme yalnızca nextpdf ile sınırlanır. Derleyici her depoyu --source-dir kökünün altında bir kardeş dizin olarak çözümler. Herhangi bir şey kopyalamadan önce beklenen tüm depoları doğrular. Biri eksikse birleştirme iptal edilir; deponun adı ve yolu bildirilir. scripts/merge-sources.php (MergeSources::__construct(), run()) ile doğrulanmıştır.
Birleştirme, çekirdeği src/ konumuna, her bağdaştırıcıyı ise kendi ad alanlı alt dizinine (src/Artisan/, src/Laravel/ ve benzeri) yerleştirir. Pro, derlemenin onu kendi paketi olarak üretebilmesi için ayrı bir pro/src/ ağacına yerleştirilir. MergeSources (mergeCore(), mergeArtisan(), mergePro()) ile doğrulanmıştır.
Önyükleme sırası
“Önyükleme sırası” başlıklı bölümscripts/build.php, CLI Sunucu Uygulama Programlama Arabirimi (SAPI) altında çalışır. Bu giriş noktası,require_oncedeyimiyle öncemerge-sources.php, ardındanadjust-composer.phpdosyasını dahil eder.- CLI giriş noktası, seçenekleri
getopt()ile okur —--version,--source-dir,--output-dir,--target,--dry-run,--no-pro. - Bir
Buildörneği oluşturulur. Kurucu,--targetdeğerini['php74', 'php81']değerleriyle karşılaştırarak doğrular ve herhangi bir işlem başlamadan önce geçersiz bir değer içinInvalidArgumentExceptionoluşturur. PHP 7.4 hedefi için yalnızca çekirdek çıktısını zorunlu kılar ve Pro’yu devre dışı bırakır. Build::run(), beş aşamayı yürütür ve başarı durumunda 0, ilk başarısızlıkta ise 1 durum koduyla çıkar.
Şuna göre doğrulanmıştır: scripts/build.php (CLI giriş noktası, Build::__construct(), run()).
Kapsayıcı bağlamaları
“Kapsayıcı bağlamaları” başlıklı bölümGeçerli değil. Derleyici bir CLI aracıdır. Bağımlılık enjeksiyonu kapsayıcısı ya da çerçeve hizmet kapsayıcısı yoktur. Bağlama, açık require_once çağrılarının yanı sıra NextPDF\Backport\ (kurallar) ve NextPDF\Backport\Scripts\ (betikler) için Composer PSR-4 otomatik yüklemesiyle yapılır. Şunlara göre doğrulanmıştır: composer.jsonautoload ve require_once deyimleri (scripts/build.php içinde).
Yapılandırma çözümleme sırası
“Yapılandırma çözümleme sırası” başlıklı bölümYapılandırma dosyası yoktur. Yapılandırma, betiğin içine gömülü varsayılanlara göre çözümlenen CLI bayraklarından gelir:
- Sağlandıysa CLI bayrağı.
- Şuradaki varsayılan:
getopt()ayrıştırma bloğu (örneğin, hedef varsayılan olarakphp81değerini, sürüm ise varsayılan olarak2.0.0değerini alır). - Kurucunun hedefe göre türettiği davranış (PHP 7.4,
--no-probayrağından bağımsız olarak yalnızca çekirdeği zorunlu kılar ve Pro’yu kapatır).
Şuna göre doğrulanmıştır: scripts/build.php (CLI giriş noktası ve Build::__construct()). Tam bayrak başvurusunu şu adreste bulabilirsiniz: /integrations/backport/configuration/.
Tanılama
“Tanılama” başlıklı bölümDüzenleyici kendi tanılama çıktısını sağlar. Herhangi bir şey yazmadan, okunacak kaynak depolarını ve her aşamanın amacını görmek için kuru çalıştırmayı (composer build:dry) çalıştırın. Her aşama bir başarı onay işareti ya da adlandırılmış bir başarısızlık çıktısı üretir. Ayrı bir tanılama alt komutu ve bin/ giriş noktası yoktur. Derleyici, scripts/build.php ya da onun Composer betiği takma adları üzerinden çalışır. scripts/build.php (step(), dryRun dalları), scripts/merge-sources.php (run() kuru çalıştırma yolu) ve composer.jsonscripts ile doğrulanmıştır.
Ayrıca bkz.
“Ayrıca bkz.” başlıklı bölüm- /integrations/backport/overview/ — derleyicinin ne olduğu ve ne ürettiği.
- /integrations/backport/integration/ — derleme ana makinesi tümleştirme sözleşmesi.
- /integrations/backport/configuration/ — Rector yapılandırmaları ve bayrak başvurusu.
- /integrations/backport/troubleshooting/ — aşama bazında başarısızlık başvurusu.