İçeriğe geç

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.

Derleyici; ç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.

Dü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:

  1. Kaynakları birleştir — kaynak depolarını tek bir ağaca kopyalar.
  2. 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.
  3. composer.json oluştur — oluşturulan paket bildirimini replace eşlemesiyle birlikte yazar.
  4. Statik varlıkları kopyala — lisansı ve oluşturulan bir değişiklik günlüğünü kopyalar.
  5. Çı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 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.

  1. scripts/build.php, CLI Sunucu Uygulama Programlama Arabirimi (SAPI) altında çalışır. Bu giriş noktası, require_once deyimiyle önce merge-sources.php, ardından adjust-composer.php dosyasını dahil eder.
  2. CLI giriş noktası, seçenekleri getopt() ile okur — --version, --source-dir, --output-dir, --target, --dry-run, --no-pro.
  3. Bir Build örneği oluşturulur. Kurucu, --target değ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çin InvalidArgumentException oluşturur. PHP 7.4 hedefi için yalnızca çekirdek çıktısını zorunlu kılar ve Pro’yu devre dışı bırakır.
  4. 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()).

Geç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 dosyası yoktur. Yapılandırma, betiğin içine gömülü varsayılanlara göre çözümlenen CLI bayraklarından gelir:

  1. Sağlandıysa CLI bayrağı.
  2. Şuradaki varsayılan: getopt() ayrıştırma bloğu (örneğin, hedef varsayılan olarak php81 değerini, sürüm ise varsayılan olarak 2.0.0 değerini alır).
  3. Kurucunun hedefe göre türettiği davranış (PHP 7.4, --no-pro bayrağı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/.

Dü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.

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