Ga naar inhoud

NextPDF Backport Builder installeren

Installeer deze buildtooling op het werkstation van een maintainer of op een continuous-integration-runner (CI-runner). Dit is GEEN runtimeafhankelijkheid. Een downstreamapplicatie installeert de builder nooit; die installeert het pakket dat de builder produceert.

Twee doelgroepen installeren elk iets anders:

  • Een maintainer of CI-operator kloont deze repository en installeert de bijbehorende buildafhankelijkheden. Installeer nextpdf/backport-builder alleen in deze context.
  • Een downstreamapplicatie op een oudere PHP-runtime installeert het gegenereerde pakket nextpdf/backport vanuit het bijbehorende releasekanaal. Deze repository komt daarbij nooit aan bod.

Deze pagina behandelt beide workflows. Lees het gedeelte dat bij je rol past.

AfhankelijkheidConstraintBron van waarheid
PHP>=8.4 <9.0composer.jsonrequire.php
Composer2.6+Omgevingstabel in CONTRIBUTING.md
rector/rector^2.0composer.jsonrequire-dev
phpstan/phpstan^2.1composer.jsonrequire-dev
phpunit/phpunit^13.0composer.jsonrequire-dev

De CI-workflow gebruikt PHP 8.5 voor zowel de build als de dry-run-job. Elke buildhost met een PHP-versie binnen >=8.4 <9.0 voldoet aan de Composer-constraint. De PHP-parser moet de nieuwste syntaxis kunnen verwerken die de broncode gebruikt. Geverifieerd aan de hand van .github/workflows/0-ci.yml.

  1. Kloon de repository en check daarna de branch uit voor het target dat je wilt bouwen. PHP74 is de standaardbranch en produceert de core-only-distributie voor PHP 7.4. PHP81 produceert de PHP 8.1-distributie met alle adapters.

    Terminal window
    git clone https://github.com/nextpdf-labs/backport.git
    cd backport
    git checkout PHP74
  2. Installeer de buildafhankelijkheden. Geef --no-dev niet mee: de Rector-engine, PHPStan en PHPUnit staan in require-dev, en zonder die kan de build niet worden uitgevoerd.

    Terminal window
    composer install --prefer-dist --no-progress
  3. Controleer dat de toolchain correct wordt opgelost. Het script analyse voert PHPStan op niveau 10 uit over rector/rules en scripts. Een schone run laat zien dat de buildcode zelf in orde is voordat je output produceert.

    Terminal window
    composer analyse
  4. Voer de fixturetests van de regels uit. Elke aangepaste Rector-regel heeft een fixture-suite die de exacte before/after-transformatie controleert.

    Terminal window
    composer test

Na stap 4 is de host klaar om te bouwen. Ga naar /integrations/backport/quickstart/ voor de commando’s voor de dry-run en de volledige build.

De build voegt meerdere bronrepository’s samen tot één boom. Plaats ze als naastgelegen mappen onder één bronroot; het merge-script zoekt elke map op naam op. Voor het PHP 8.1-target leest het nextpdf (core), nextpdf-Artisan, nextpdf-compat-legacy, nextpdf-Laravel, nextpdf-Symfony, nextpdf-CodeIgniter en, wanneer Pro is inbegrepen, nextpdf-Pro. Voor het PHP 7.4-target leest het alleen nextpdf. Geverifieerd aan de hand van scripts/merge-sources.php (MergeSources::__construct()). Geef de bronroot op met --source-dir. Zie /integrations/backport/configuration/ voor de referentie van de vlaggen.

Downstreamgebruik van het geproduceerde pakket

Sectie met titel “Downstreamgebruik van het geproduceerde pakket”

Wanneer je een project op een oudere PHP-runtime ondersteunt, installeer je de geproduceerde distributie, niet deze builder.

Terminal window
composer require nextpdf/backport

Het geïnstalleerde pakket declareert de constraint >=8.1 <8.5 en vervangt nextpdf/core, nextpdf/artisan, nextpdf/laravel, nextpdf/symfony, nextpdf/codeigniter en nextpdf/compat-legacy. Applicatiecode blijft de namespace NextPDF\ ongewijzigd importeren. Het pakket laadt de samengevoegde boom automatisch via één PHP Standard Recommendation 4-prefix (PSR-4), NextPDF\, die aan src/ is toegewezen. Een PSR-4-autoloader voegt de relatieve klassenaam toe aan de basismap die voor de prefix is geregistreerd (PHP-FIG PSR-4). Geverifieerd aan de hand van scripts/adjust-composer.php (buildPublicAutoloadMap(), buildReplace()).

Terminal window
composer require nextpdf/backport

De PHP 7.4-distributie is alleen core. De distributie declareert de constraint >=7.4 <8.1 en vervangt alleen nextpdf/core. Framework-adapters, de tcpdf-compatibiliteitslaag en Pro zijn niet inbegrepen in de PHP 7.4-distributie. Geverifieerd aan de hand van scripts/adjust-composer.php en scripts/build.php (het PHP 7.4-target dwingt core-only af). Een project dat een framework-adapter nodig heeft, heeft PHP 8.1 of nieuwer nodig.

Terminal window
composer require nextpdf/backport-pro

De Pro-distributie is een afzonderlijk pakket, nextpdf/backport-pro, met een proprietary-licentie. Ze vereist nextpdf/backport op dezelfde major.minor-versie en voegt phpseclib/phpseclib ^3.0 toe. Ze wordt alleen geproduceerd voor het PHP 8.1-target. Geverifieerd aan de hand van scripts/adjust-composer.php (generateProComposer()).

De PHP 7.4-distributie en de Pro-distributie sluiten elkaar uit: door de opzet van het build-script bestaat er geen PHP 7.4 Pro-build.

De gegenereerde composer.json vereist symfony/polyfill-*-pakketten, zodat nieuwere functies uit de standaardbibliotheek op de doelruntime beschikbaar zijn. Het PHP 8.1-target vereist polyfills voor PHP 8.2 tot en met 8.5. Het PHP 7.4-target vereist daarnaast polyfills voor PHP 8.0 en 8.1. Dit zijn runtimeafhankelijkheden van het geproduceerde pakket, niet van de builder. Geverifieerd aan de hand van scripts/adjust-composer.php (generatePublicComposer()).

  • /integrations/backport/configuration/ — Rector-configuratie, aangepaste regels en de referentie van de build-vlaggen.
  • /integrations/backport/quickstart/ — je eerste dry-run en volledige build.