Przejdź do głównej zawartości

Instalacja narzędzia NextPDF Backport Builder

Zainstaluj te narzędzia kompilacji na stacji roboczej opiekuna lub na runnerze ciągłej integracji (CI). NIE jest to zależność uruchomieniowa. Aplikacja pochodna nigdy nie instaluje narzędzia kompilacji; instaluje pakiet wytwarzany przez to narzędzie.

Dwie grupy odbiorców instalują różne elementy:

  • Opiekun lub operator CI klonuje to repozytorium i instaluje jego zależności kompilacji. Pakiet nextpdf/backport-builder instaluje się wyłącznie w tym kontekście.
  • Aplikacja pochodna działająca w starszym środowisku uruchomieniowym PHP instaluje wygenerowany pakiet nextpdf/backport ze swojego kanału wydań. Nigdy nie sięga do tego repozytorium.

Ta strona obejmuje oba przepływy pracy. Przeczytaj sekcję, która odpowiada Twojej roli.

ZależnośćOgraniczenieŹródło prawdy
PHP>=8.4 <9.0composer.jsonrequire.php
Composer2.6+Tabela środowiska w pliku CONTRIBUTING.md
rector/rector^2.0composer.jsonrequire-dev
phpstan/phpstan^2.1composer.jsonrequire-dev
phpunit/phpunit^13.0composer.jsonrequire-dev

Przepływ pracy CI udostępnia PHP 8.5 zarówno do zadania kompilacji, jak i do zadania próbnego uruchomienia. Każdy host kompilacji z wersją PHP z przedziału >=8.4 <9.0 spełnia ograniczenie Composera. Parser PHP musi akceptować najnowszą składnię używaną w kodzie źródłowym. Zweryfikowano względem .github/workflows/0-ci.yml.

  1. Sklonuj repozytorium, a następnie przełącz się na gałąź odpowiadającą docelowej wersji, którą chcesz zbudować. PHP74 to gałąź domyślna; tworzy dystrybucję dla PHP 7.4 zawierającą wyłącznie rdzeń. PHP81 tworzy dystrybucję dla PHP 8.1 ze wszystkimi adapterami.

    Okno terminala
    git clone https://github.com/nextpdf-labs/backport.git
    cd backport
    git checkout PHP74
  2. Zainstaluj zależności kompilacji. Nie przekazuj --no-dev: silnik Rector, PHPStan i PHPUnit znajdują się w require-dev, a bez nich kompilacja nie może działać.

    Okno terminala
    composer install --prefer-dist --no-progress
  3. Potwierdź, że łańcuch narzędzi jest poprawnie rozwiązywany. Skrypt analyse uruchamia PHPStan na poziomie 10 dla rector/rules i scripts. Bezbłędne wykonanie potwierdza, że sam kod kompilacji jest poprawny, zanim wytworzysz wynik.

    Okno terminala
    composer analyse
  4. Uruchom testy oparte na fixture’ach reguł. Każda niestandardowa reguła Rector ma zestaw fixture’ów, który dokładnie sprawdza transformację before/after.

    Okno terminala
    composer test

Po kroku 4 host jest gotowy do kompilacji. Przejdź do /integrations/backport/quickstart/, aby poznać polecenia uruchomienia próbnego i pełnej kompilacji.

Kompilacja scala kilka repozytoriów źródłowych w jedno drzewo. Umieść je jako katalogi równorzędne w jednym katalogu głównym źródeł; skrypt scalający odwołuje się do każdego katalogu po nazwie. W przypadku docelowej wersji PHP 8.1 odczytuje nextpdf (rdzeń), nextpdf-Artisan, nextpdf-compat-legacy, nextpdf-Laravel, nextpdf-Symfony, nextpdf-CodeIgniter oraz nextpdf-Pro, jeśli dołączono Pro. W przypadku docelowej wersji PHP 7.4 odczytuje wyłącznie nextpdf. Zweryfikowano względem scripts/merge-sources.php (MergeSources::__construct()). Wskaż katalog główny źródeł za pomocą --source-dir. Opis flag znajdziesz na stronie /integrations/backport/configuration/.

Korzystanie z wytworzonego pakietu w projektach pochodnych

Dział zatytułowany „Korzystanie z wytworzonego pakietu w projektach pochodnych”

Gdy utrzymujesz projekt działający w starszym środowisku uruchomieniowym PHP, zainstaluj wytworzoną dystrybucję, a nie to narzędzie kompilacji.

Okno terminala
composer require nextpdf/backport

Zainstalowany pakiet deklaruje ograniczenie >=8.1 <8.5 i zastępuje pakiety nextpdf/core, nextpdf/artisan, nextpdf/laravel, nextpdf/symfony, nextpdf/codeigniter oraz nextpdf/compat-legacy. Kod aplikacji nadal importuje przestrzeń nazw NextPDF\ bez zmian. Pakiet automatycznie ładuje scalone drzewo za pomocą pojedynczego prefiksu PHP Standard Recommendation 4 (PSR-4) NextPDF\ odwzorowanego na src/. Mechanizm automatycznego ładowania PSR-4 dołącza względną nazwę klasy do katalogu bazowego zarejestrowanego dla danego prefiksu (PHP-FIG PSR-4). Zweryfikowano względem scripts/adjust-composer.php (buildPublicAutoloadMap(), buildReplace()).

Okno terminala
composer require nextpdf/backport

Dystrybucja dla PHP 7.4 zawiera wyłącznie rdzeń. Deklaruje ograniczenie >=7.4 <8.1 i zastępuje wyłącznie nextpdf/core. Adaptery frameworków, warstwa zgodności z tcpdf oraz Pro nie są zawarte w dystrybucji dla PHP 7.4. Zweryfikowano względem scripts/adjust-composer.php oraz scripts/build.php (docelowa wersja PHP 7.4 wymusza tryb obejmujący wyłącznie rdzeń). Projekt, który potrzebuje adaptera frameworka, wymaga PHP 8.1 lub nowszego.

Okno terminala
composer require nextpdf/backport-pro

Dystrybucja Pro to osobny pakiet, nextpdf/backport-pro, z licencją proprietary. Wymaga nextpdf/backport w zgodnej wersji major.minor i dodaje phpseclib/phpseclib ^3.0. Jest tworzona wyłącznie dla docelowej wersji PHP 8.1. Zweryfikowano względem scripts/adjust-composer.php (generateProComposer()).

Dystrybucja dla PHP 7.4 i dystrybucja Pro wzajemnie się wykluczają: ze względu na konstrukcję skryptu kompilacji nie istnieje kompilacja Pro dla PHP 7.4.

Wygenerowany plik composer.json wymaga pakietów symfony/polyfill-*, aby nowsze funkcje biblioteki standardowej były dostępne w docelowym środowisku uruchomieniowym. Docelowa wersja PHP 8.1 wymaga polyfilli dla PHP od 8.2 do 8.5. Docelowa wersja PHP 7.4 wymaga dodatkowo polyfilli dla PHP 8.0 i 8.1. Są to zależności uruchomieniowe wytworzonego pakietu, a nie narzędzia kompilacji. Zweryfikowano względem scripts/adjust-composer.php (generatePublicComposer()).

  • /integrations/backport/configuration/ — konfiguracja Rector, reguły niestandardowe i opis flag kompilacji.
  • /integrations/backport/quickstart/ — pierwsze uruchomienie próbne i pełna kompilacja.