Overzicht van de NextPDF Backport Builder
Buildtool, geen runtime-afhankelijkheid. De onderhouders van NextPDF gebruiken dit pakket om PHP 8.1+- en PHP 7.4+-compatibele distributies van NextPDF te produceren. Applicaties mogen dit pakket nooit als runtime-afhankelijkheid toevoegen.
In een oogopslag
Sectie met titel “In een oogopslag”De NextPDF Backport Builder is buildinfrastructuur voor het produceren van een backported distributie van het NextPDF-ecosysteem voor PHP-runtimes die ouder zijn dan de ontwikkelbaseline. NextPDF is geschreven voor een moderne PHP-versie en gebruikt syntaxis die oudere interpreters weigeren. De builder voert de broncode door Rector, een engine die abstracte syntaxisbomen transformeert, en levert pakketten op waarvan de syntaxis door een PHP 8.1- of PHP 7.4-runtime wordt geaccepteerd.
De naam van het Composer-pakket is nextpdf/backport-builder. Het pakket declareert "type": "project" en bevat geen NextPDF-runtime-afhankelijkheid. De vereisten zijn beperkt tot de build-engine (rector/rector), statische analyse (phpstan/phpstan), de testrunner (phpunit/phpunit) en een reeks symfony/polyfill-*-pakketten die in de gegenereerde uitvoer worden gebruikt. De composer.json in de hoofdmap van de repository onderbouwt dit.
Wat dit pakket niet is
Sectie met titel “Wat dit pakket niet is”Deze repository bevat niet de NextPDF-engine. De repository bevat de regels en scripts die die engine omzetten naar een backported vorm. Die scheiding heeft drie praktische gevolgen:
- Je installeert dit niet om PDF’s te renderen. Installeer
nextpdf/backport, het artefact dat deze builder produceert. Houd de builder op de host van de onderhouder of op de continuous-integration-host (CI-host). - Je ontwikkelt niet tegen de gegenereerde code. De gegenereerde distributie is een machinaal geproduceerd, alleen-lezen artefact. Stuur bugrapporten en functieverzoeken naar de oorspronkelijke
nextpdf/*-bronrepository’s. - De uitvoer wordt geleverd als versietags, niet als branches van deze repository. De releasepijplijn tagt de gegenereerde boom en voegt archieven toe aan een GitHub-release.
Wat het produceert
Sectie met titel “Wat het produceert”De builder levert Composer-pakketten op waarvan de namen en licenties worden vastgelegd door scripts/adjust-composer.php:
| Geproduceerd pakket | Licentie | Bereik | Gebouwd wanneer |
|---|---|---|---|
nextpdf/backport | Apache-2.0 | Core, framework-adapters en de tcpdf-compatibiliteitslaag voor het PHP 8.1-doel | Altijd |
nextpdf/backport-pro | proprietary | De Pro-module, opgeleverd als een afzonderlijk pakket | PHP 8.1-doel, wanneer de Pro-broncode aanwezig is en Pro niet is uitgesloten |
Het nextpdf/backport-pakket declareert Composer-replace-vermeldingen, zodat het na installatie voldoet aan de oorspronkelijke pakketbeperkingen. Voor het PHP 8.1-doel zijn de vervangen pakketten nextpdf/core, nextpdf/artisan, nextpdf/laravel, nextpdf/symfony, nextpdf/codeigniter en nextpdf/compat-legacy. Voor het PHP 7.4-doel wordt alleen nextpdf/core vervangen, omdat de PHP 7.4-build alleen Core bevat. scripts/adjust-composer.php (buildReplace()) verifieert dit.
De autoloader van een consument lost de samengevoegde boom op via één PHP Standards Recommendation 4-prefix (PSR-4), NextPDF\, gekoppeld aan src/. PSR-4 koppelt een namespace-prefix aan een basismap en lost elke volledig gekwalificeerde klassennaam op naar een bestand onder die map; zie PHP Framework Interop Group (PHP-FIG) PSR-4. Het Pro-pakket koppelt NextPDF\Pro\ aan zijn eigen src/.
Ondersteunde PHP-matrix
Sectie met titel “Ondersteunde PHP-matrix”De onderstaande matrix dekt alleen wat de Rector-configuraties en buildscripts afdwingen. De buildhost draait altijd een moderne PHP-versie. De uitvoer richt zich op een oudere versie.
| Aandachtspunt | Waarde | Bewijs |
|---|---|---|
| PHP van de buildhost | >=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') |
| Uitvoerbeperking voor het PHP 8.1-doel | >=8.1 <8.5 | scripts/adjust-composer.php (generatePublicComposer()) |
| Uitvoerbeperking voor het PHP 7.4-doel | >=7.4 <8.1 | scripts/adjust-composer.php (generatePublicComposer()) |
| Bereik van het PHP 8.1-doel | Core + Artisan + Laravel + Symfony + CodeIgniter + compat-legacy (+ Pro, afzonderlijk) | scripts/merge-sources.php, scripts/adjust-composer.php |
| Bereik van het PHP 7.4-doel | Alleen Core | scripts/build.php (--target=php74 dwingt alleen-core af, Pro uitgeschakeld) |
De PHP 8.1-build wordt gevalideerd op PHP 8.1, 8.2, 8.3 en 8.4. De PHP 7.4-build wordt gevalideerd op PHP 7.4 en 8.0. De jobmatrixen validate-php81 en validate-php74 in .github/workflows/build.yml verifiëren dit. Dit zijn de runtimes die de pijplijn test. Ze vormen een waargenomen validatieset, geen conformiteitsclaim.
Het model met twee branches
Sectie met titel “Het model met twee branches”Deze repository heeft geen main-branch. PHP74 is de standaardbranch en PHP81 is de tweede permanente branch. Je branch bepaalt twee zaken: het standaarddoel van de lokale build en de bronset die wordt samengevoegd. Breng een wijziging die beide doelen raakt op elke branch aan via een eigen pull request. De CI-workflow draait op zowel PHP74 als PHP81. Dit wordt geverifieerd aan de hand van git branch -a en .github/workflows/0-ci.yml (branches: [PHP74, PHP81]).
Hoe een release tot stand komt
Sectie met titel “Hoe een release tot stand komt”Het releasepad is gebeurtenisgestuurd. Wanneer de bronorganisatie van NextPDF een releasetag publiceert, activeert een repository-dispatch-gebeurtenis van het type source-release de buildworkflow. De workflow checkt elke bronrepository uit op de overeenkomende tag, draait de pijplijn, controleert de syntaxis van de uitvoer voor de doelruntime, valideert deze over de ondersteuningsmatrix en voegt de archieven toe aan een GitHub-release. De versietag volgt Semantic Versioning: een versienummer is MAJOR.MINOR.PATCH over een gedeclareerde publieke API (Semantic Versioning 2.0.0 §2). .github/workflows/build.yml verifieert dit.
Waar je verder kunt gaan
Sectie met titel “Waar je verder kunt gaan”- /integrations/backport/install/ — hoe je de builder op een buildhost installeert en hoe consumenten het geproduceerde pakket installeren.
- /integrations/backport/configuration/ — Rector-configuraties, aangepaste regels en buildvlaggen.
- /integrations/backport/quickstart/ — een dry-run en volledige buildaanroep die door broncode worden onderbouwd.
- /integrations/backport/production-usage/ — hoe je de builder in een releaseworkflow inbouwt.
- /integrations/backport/troubleshooting/ — foutmodi waartegen de pijplijn beschermt en hoe je ze interpreteert.
- /integrations/backport/security-and-operations/ — de houding voor de toeleveringsketen, de vertrouwensgrens en operationele garanties.
- /integrations/backport/boot-and-discovery/ — hoe de builder bronmodules ontdekt en opstart.
- /integrations/backport/integration/ — het integratiecontract voor de buildhost.