NextPDF Backport Builder'a genel bakış
Çalışma zamanı bağımlılığı değil, bir derleme araç takımıdır. NextPDF bakımcıları, NextPDF’in PHP 8.1+ ve PHP 7.4+ uyumlu dağıtımlarını üretmek için bu paketi kullanır. Uygulamalar, bu paketi asla çalışma zamanı bağımlılığı olarak eklememelidir.
Bir bakışta
“Bir bakışta” başlıklı bölümNextPDF Backport Builder, NextPDF ekosisteminin sürümü düşürülmüş dağıtımlarını, geliştirmede temel alınan sürümden daha eski PHP çalışma zamanları için üreten derleme altyapısıdır. NextPDF modern bir PHP sürümü için yazılmıştır ve daha eski yorumlayıcıların reddettiği söz dizimini kullanır. Builder, kaynağı soyut söz dizimi ağaçlarını dönüştüren bir motor olan Rector üzerinden geçirir ve PHP 8.1 ya da PHP 7.4 çalışma zamanının kabul edeceği söz dizimine sahip paketler üretir.
Composer paketinin adı nextpdf/backport-builder şeklindedir. "type": "project" bildirir ve hiçbir NextPDF çalışma zamanı bağımlılığı taşımaz. Gereksinimleri yalnızca derleme motoru (rector/rector), statik analiz (phpstan/phpstan), test çalıştırıcısı (phpunit/phpunit) ve üretilen çıktıda kullanılan bir grup symfony/polyfill-* paketiyle sınırlıdır. Bu durum, depo kökündeki composer.json tarafından doğrulanır.
Bu paketin ne olmadığı
“Bu paketin ne olmadığı” başlıklı bölümBu depo NextPDF motorunu içermez. Bu motoru backport edilmiş biçime dönüştüren kuralları ve betikleri içerir. Bu ayrımın üç pratik etkisi vardır:
- PDF’leri işlemek için bunu kurmazsınız. Bu builder’ın ürettiği yapıt olan
nextpdf/backportpaketini kurun. Builder’ı bakımcı veya sürekli entegrasyon (CI) ana makinesinde tutun. - Üretilen kod üzerinde geliştirme yapmazsınız. Üretilen dağıtım, makine tarafından oluşturulan, salt okunur bir yapıttır. Hata raporlarını ve özellik isteklerini özgün
nextpdf/*kaynak depolarına gönderin. - Çıktı, bu deponun dalları olarak değil, sürüm etiketleri olarak yayımlanır. Sürüm yayımlama hattı, üretilen ağacı etiketler ve arşivleri bir GitHub sürümüne ekler.
Ne ürettiği
“Ne ürettiği” başlıklı bölümBuilder, adları ve lisansları scripts/adjust-composer.php tarafından belirlenen Composer paketleri üretir:
| Üretilen paket | Lisans | Kapsam | Ne zaman derlenir |
|---|---|---|---|
nextpdf/backport | Apache-2.0 | PHP 8.1 hedefi için Core, çerçeve adaptörleri ve tcpdf uyumluluk katmanı | Her zaman |
nextpdf/backport-pro | proprietary | Ayrı bir paket olarak üretilen Pro modülü | PHP 8.1 hedefi; Pro kaynağı mevcut olduğunda ve Pro hariç tutulmadığında |
Kurulumdan sonra nextpdf/backport paketi, özgün paket kısıtlamalarını karşılayacak biçimde Composer replace girdileri bildirir. PHP 8.1 hedefi için değiştirilen paketler nextpdf/core, nextpdf/artisan, nextpdf/laravel, nextpdf/symfony, nextpdf/codeigniter ve nextpdf/compat-legacy paketleridir. PHP 7.4 hedefi için yalnızca nextpdf/core değiştirilir, çünkü PHP 7.4 derlemesi yalnızca core’u içerir. Bu, scripts/adjust-composer.php (buildReplace()) tarafından doğrulanır.
Bir tüketicinin otomatik yükleyicisi, birleştirilmiş ağacı tek bir PHP Standards Recommendation 4 (PSR-4) ön eki olan NextPDF\ ile, yani src/ dizinine eşlenen ön ek aracılığıyla çözer. PSR-4, bir ad alanı ön ekini bir temel dizine eşler ve tam nitelikli her sınıf adını bu dizinin altındaki bir dosyaya çözer; bkz. PHP framework Interop Group (PHP-FIG) PSR-4. Pro paketi, NextPDF\Pro\ ön ekini kendi src/ dizinine eşler.
Desteklenen PHP matrisi
“Desteklenen PHP matrisi” başlıklı bölümAşağıdaki matris yalnızca Rector yapılandırmalarının ve derleme betiklerinin zorunlu kıldığı değerleri kapsar. Derleme ana makinesi her zaman modern bir PHP sürümü çalıştırır. Çıktı ise daha eski bir sürümü hedefler.
| Konu | Değer | Kanıt |
|---|---|---|
| Derleme ana makinesi PHP | >=8.4 <9.0 | composer.jsonrequire.php |
| CI build/test PHP | 8.5 | .github/workflows/0-ci.yml, build.yml (shivammathur/setup-phpphp-version: '8.5') |
| PHP 8.1 hedef çıktı kısıtlaması | >=8.1 <8.5 | scripts/adjust-composer.php (generatePublicComposer()) |
| PHP 7.4 hedef çıktı kısıtlaması | >=7.4 <8.1 | scripts/adjust-composer.php (generatePublicComposer()) |
| PHP 8.1 hedef kapsamı | Core + Artisan + Laravel + Symfony + CodeIgniter + compat-legacy (+ ayrı olarak Pro) | scripts/merge-sources.php, scripts/adjust-composer.php |
| PHP 7.4 hedef kapsamı | Yalnızca Core | scripts/build.php (--target=php74 yalnızca core’u zorlar, Pro devre dışı bırakılır) |
PHP 8.1 derlemesi PHP 8.1, 8.2, 8.3 ve 8.4 üzerinde doğrulanır. PHP 7.4 derlemesi PHP 7.4 ve 8.0 üzerinde doğrulanır. validate-php81 ve validate-php74 iş matrisleri, bunu .github/workflows/build.yml içinde doğrular. Bunlar hattın denediği çalışma zamanlarıdır; bir uyumluluk iddiası değil, gözlemlenmiş bir doğrulama kümesidir.
İki dallı model
“İki dallı model” başlıklı bölümBu deponun main dalı yoktur. PHP74 varsayılan daldır ve PHP81 ikinci kalıcı daldır. Dalınız iki şeyi belirler: yerel derlemenin varsayılan hedefi ve birleştirilen kaynak kümesi. Her iki hedefi de etkileyen bir değişikliği, her dal için ayrı bir çekme isteğiyle uygulayın. CI iş akışı hem PHP74 hem de PHP81 üzerinde çalışır. Bu, git branch -a ve .github/workflows/0-ci.yml (branches: [PHP74, PHP81]) ile doğrulanır.
Bir sürümün nasıl yayımlandığı
“Bir sürümün nasıl yayımlandığı” başlıklı bölümSürüm yayımlama akışı olay güdümlüdür. NextPDF kaynak organizasyonu bir sürüm etiketi yayımladığında, source-release türünde bir depo-gönderim olayı derleme iş akışını tetikler. İş akışı, her kaynak deposunu eşleşen etiketten çıkarır, hattı çalıştırır, çıktıyı hedef çalışma zamanında söz dizimi açısından denetler, destek matrisi genelinde doğrular ve arşivleri bir GitHub sürümüne ekler. Sürüm etiketi Semantic Versioning standardını izler: bir sürüm numarası, bildirilmiş bir genel API üzerinde MAJOR.MINOR.PATCH biçimindedir (Semantic Versioning 2.0.0 §2). Bu, .github/workflows/build.yml tarafından doğrulanır.
Sonraki adımlar
“Sonraki adımlar” başlıklı bölüm- /integrations/backport/install/ — builder’ın bir derleme ana makinesine nasıl kurulacağı ve tüketicilerin üretilen paketi nasıl kuracağı.
- /integrations/backport/configuration/ — Rector yapılandırmaları, özel kurallar ve derleme bayrakları.
- /integrations/backport/quickstart/ — kaynak destekli bir deneme çalıştırması ve tam derleme çağrısı.
- /integrations/backport/production-usage/ — builder’ın bir sürüm yayımlama iş akışına nasıl bağlanacağı.
- /integrations/backport/troubleshooting/ — hattın koruma altına aldığı hata kipleri ve bunların nasıl okunacağı.
- /integrations/backport/security-and-operations/ — tedarik zinciri duruşu, güven sınırı ve işletimsel garantiler.
- /integrations/backport/boot-and-discovery/ — builder’ın kaynak modüllerini nasıl keşfettiği ve nasıl başlatıldığı.
- /integrations/backport/integration/ — derleme ana makinesi entegrasyon sözleşmesi.