Перейти к содержимому
getnextpdf.com

стабильность: Бета

Установка Backport

Устанавливайте этот набор инструментов сборки на рабочей станции сопровождающего или на раннере непрерывной интеграции (CI). Это НЕ зависимость времени выполнения. Приложение-потребитель никогда не устанавливает сборщик; оно устанавливает пакет, который создаёт сборщик.

Для двух аудиторий установка различается:

  • Сопровождающий или оператор CI клонирует этот репозиторий и устанавливает его зависимости сборки. Устанавливайте nextpdf/backport-builder только в этом контексте.
  • Приложение-потребитель в более старой среде выполнения PHP устанавливает сгенерированный пакет nextpdf/backport из своего канала выпуска. Оно никогда не обращается к этому репозиторию.

На этой странице описаны оба рабочих процесса. Прочитайте раздел, соответствующий вашей роли.

ЗависимостьОграничениеИсточник истины
PHP>=8.4 <9.0composer.jsonrequire.php
Composer2.6+CONTRIBUTING.md, таблица окружения
rector/rector^2.0composer.jsonrequire-dev
phpstan/phpstan^2.1composer.jsonrequire-dev
phpunit/phpunit^13.0composer.jsonrequire-dev

Рабочий процесс CI подготавливает PHP 8.5 и для сборки, и для задания пробного прогона. Любой узел сборки с версией PHP в диапазоне >=8.4 <9.0 удовлетворяет ограничению Composer. Парсер PHP должен принимать новейший синтаксис, используемый исходным кодом. Проверено по .github/workflows/0-ci.yml.

  1. Клонируйте репозиторий, затем переключитесь на ветку целевой платформы, которую хотите собрать. PHP74 — это ветка по умолчанию; она создаёт дистрибутив для PHP 7.4, только с ядром. PHP81 создаёт дистрибутив для PHP 8.1 со всеми адаптерами.

    Окно терминала
    git clone https://github.com/nextpdf-labs/backport.git
    cd backport
    git checkout PHP74
  2. Установите зависимости сборки. Не передавайте --no-dev: движок Rector, PHPStan и PHPUnit указаны в require-dev, и без них сборка не сможет выполниться.

    Окно терминала
    composer install --prefer-dist --no-progress
  3. Проверьте, что цепочка инструментов корректно разрешается. Скрипт analyse запускает PHPStan на уровне 10 по rector/rules и scripts. Чистый прогон показывает, что сам код сборки исправен, прежде чем вы создадите результат.

    Окно терминала
    composer analyse
  4. Запустите тесты на фикстурах правил. У каждого пользовательского правила Rector есть набор фикстур, который проверяет точное преобразование before/after.

    Окно терминала
    composer test

После шага 4 узел готов к сборке. Команды пробного прогона и полной сборки см. в /integrations/backport/quickstart/.

Ожидаемая структура дерева исходного кода

Заголовок раздела «Ожидаемая структура дерева исходного кода»

Сборка объединяет несколько исходных репозиториев в одно дерево. Разместите их как соседние каталоги в общем корне исходного кода; скрипт слияния обращается к каждому каталогу по имени. Для целевой платформы PHP 8.1 он читает nextpdf (ядро), nextpdf-Artisan, nextpdf-compat-legacy, nextpdf-Laravel, nextpdf-Symfony, nextpdf-CodeIgniter и nextpdf-Pro, если включён Pro. Для целевой платформы PHP 7.4 он читает только nextpdf. Проверено по scripts/merge-sources.php (MergeSources::__construct()). Укажите корень исходного кода с помощью --source-dir. Справочник по флагам см. в /integrations/backport/configuration/.

Использование созданного пакета на стороне потребителя

Заголовок раздела «Использование созданного пакета на стороне потребителя»

Если вы сопровождаете проект в более старой среде выполнения PHP, устанавливайте созданный дистрибутив, а не этот сборщик.

Окно терминала
composer require nextpdf/backport

Установленный пакет объявляет ограничение >=8.1 <8.5 и заменяет nextpdf/core, nextpdf/artisan, nextpdf/laravel, nextpdf/symfony, nextpdf/codeigniter и nextpdf/compat-legacy. Код приложения продолжает импортировать пространство имён NextPDF\ без изменений. Пакет автоматически загружает объединённое дерево через единый префикс PHP Standard Recommendation 4 (PSR-4) NextPDF\, сопоставленный с src/. Автозагрузчик PSR-4 добавляет относительное имя класса к базовому каталогу, зарегистрированному для префикса (PHP-FIG PSR-4). Проверено по scripts/adjust-composer.php (buildPublicAutoloadMap(), buildReplace()).

Окно терминала
composer require nextpdf/backport

Дистрибутив для PHP 7.4 содержит только ядро. Он объявляет ограничение >=7.4 <8.1 и заменяет только nextpdf/core. Адаптеры фреймворков, слой совместимости с tcpdf и Pro не включены в дистрибутив для PHP 7.4. Проверено по scripts/adjust-composer.php и scripts/build.php (целевая платформа PHP 7.4 принудительно включает только ядро). Если проекту нужен адаптер фреймворка, требуется PHP 8.1 или новее.

Целевая платформа PHP 7.4 (только ядро) поддерживается до 2027-12-31, затем поддержка прекращается. Запланируйте переход на PHP 8.1 или новее до этой даты. Минимальная версия PHP 8.1 не зафиксирована: она отслеживает окончание срока поддержки безопасности вышестоящего PHP, поэтому самая младшая поддерживаемая целевая платформа 8.x продвигается по мере достижения версиями PHP окончания срока поддержки безопасности (EOL).

Окно терминала
composer require nextpdf/backport-pro

Дистрибутив Pro — это отдельный пакет, nextpdf/backport-pro, с лицензией proprietary. Он требует nextpdf/backport с совпадающей версией major.minor и добавляет phpseclib/phpseclib ^3.0. Пакет создаётся только для целевой платформы PHP 8.1. Проверено по scripts/adjust-composer.php (generateProComposer()).

Дистрибутив для PHP 7.4 и дистрибутив Pro взаимоисключающи: скрипт сборки не создаёт сборки Pro для PHP 7.4.

Сгенерированный composer.json требует пакеты symfony/polyfill-*, чтобы более новые функции стандартной библиотеки были доступны в целевой среде выполнения. Целевая платформа PHP 8.1 требует полифилы для PHP 8.2 — 8.5. Целевая платформа PHP 7.4 также требует полифилы для PHP 8.0 и 8.1. Это зависимости времени выполнения созданного пакета, а не сборщика. Проверено по scripts/adjust-composer.php (generatePublicComposer()).

  • /integrations/backport/configuration/ — конфигурация Rector, пользовательские правила и справочник по флагам сборки.
  • /integrations/backport/quickstart/ — ваш первый пробный прогон и полная сборка.