NextPDF-backport: boot en ontdekking
Buildtooling — GEEN runtime-afhankelijkheid. Deze pagina legt uit hoe de builder start op een host van een onderhouder of op een continuous-integration-host (CI-host). Downstream-applicaties laden deze code nooit.
In het kort
Sectie met titel “In het kort”De builder gebruikt geen framework, geen dependency-injection-container en geen automatische ontdekking van service-providers. In plaats daarvan worden PHP-command-line-interface-scripts (CLI-scripts) via require_once en de PSR-4-autoloader van Composer aan elkaar gekoppeld. Hier heeft “ontdekking” twee specifieke betekenissen: welke bronrepository’s de merge-fase leest en hoe de orchestrator de Rector-configuratie voor het doel selecteert.
Overzicht van de buildpijplijn
Sectie met titel “Overzicht van de buildpijplijn”De orchestrator is scripts/build.php. Deze start de build en voert vervolgens vijf fasen in volgorde uit. Elke fase fungeert als poort: de eerste fout stopt de build.
- Bronnen samenvoegen — kopieer de bronrepository’s naar één directorystructuur.
- Rector-downgrade uitvoeren — voer één doorloop uit voor PHP 8.1; voer twee doorlopen plus correcties uit voor PHP 7.4.
composer.jsongenereren — schrijf het gegenereerde pakketmanifest met de bijbehorendereplace-map.- Statische assets kopiëren — kopieer de licentie en een gegenereerde changelog.
- Uitvoer valideren — tel de geproduceerde PHP-bestanden; de gezaghebbende syntaxispoort wordt later in CI uitgevoerd.
Geverifieerd aan de hand van scripts/build.php (run(), step()). Zie /integrations/backport/configuration/ voor details over regelselectie en /integrations/backport/production-usage/ voor de CI-poort.
Ontdekking van bronmodules
Sectie met titel “Ontdekking van bronmodules”Bronontdekking is niet manifestgestuurd. scripts/merge-sources.php gebruikt een vaste mapping met de repositorynaam als sleutel, geselecteerd op basis van het doel.
Voor het PHP 8.1-doel bevat de mapping nextpdf (core), nextpdf-Artisan, nextpdf-compat-legacy, nextpdf-Laravel, nextpdf-Symfony, nextpdf-CodeIgniter en nextpdf-Pro wanneer Pro is inbegrepen. Voor het PHP 7.4-doel beperkt de mapping zich tot alleen nextpdf. De builder resolveert elke repository naar een gelijkliggende map onder de --source-dir-root. De builder valideert elke verwachte repository voordat er iets wordt gekopieerd. Als er een ontbreekt, breekt de merge af en meldt deze de naam en het pad ervan. Geverifieerd aan de hand van scripts/merge-sources.php (MergeSources::__construct(), run()).
De merge plaatst core in src/ en elke adapter in de bijbehorende submap met namespace (src/Artisan/, src/Laravel/, enzovoort). Pro gaat in een aparte pro/src/-boom, zodat de build het als een eigen pakket kan uitgeven. Geverifieerd aan de hand van MergeSources (mergeCore(), mergeArtisan(), mergePro()).
Bootsequentie
Sectie met titel “Bootsequentie”scripts/build.phpdraait onder de CLI Server Application Programming Interface (SAPI). Het voertrequire_onceuit voormerge-sources.phpenadjust-composer.php.- Het CLI-toegangspunt leest opties met
getopt()—--version,--source-dir,--output-dir,--target,--dry-run,--no-pro. - Er wordt een
Build-instantie geconstrueerd. De constructor valideert--targettegen['php74', 'php81']en werptInvalidArgumentExceptionop bij een ongeldige waarde, voordat er werk begint. Voor het PHP 7.4-doel forceert de constructor uitvoer met alleen core en schakelt deze Pro uit. Build::run()voert de vijf fasen uit en sluit af met status 0 bij succes, of 1 bij de eerste fout.
Geverifieerd aan de hand van scripts/build.php (CLI-toegangspunt, Build::__construct(), run()).
Containerbindingen
Sectie met titel “Containerbindingen”Niet van toepassing. De builder is een CLI-tool. Deze heeft geen dependency-injection-container en geen framework-servicecontainer. De koppeling gebruikt expliciete require_once-aanroepen, plus Composer-PSR-4-autoloading van NextPDF\Backport\ (regels) en NextPDF\Backport\Scripts\ (scripts). Geverifieerd aan de hand van composer.jsonautoload en de require_once-statements in scripts/build.php.
Volgorde van configuratie-oplossing
Sectie met titel “Volgorde van configuratie-oplossing”Er is geen configuratiebestand. De configuratie komt uit CLI-vlaggen, aangevuld met de standaardwaarden die in het script zijn ingebakken:
- De CLI-vlag, als die is opgegeven.
- De standaardwaarde in het
getopt()-parsingblok (target is bijvoorbeeld standaardphp81en version is standaard2.0.0). - Gedrag dat de constructor afleidt uit het doel (PHP 7.4 forceert alleen core en geen Pro, ongeacht
--no-pro).
Geverifieerd aan de hand van scripts/build.php (CLI-toegangspunt en Build::__construct()). De volledige vlagreferentie staat in /integrations/backport/configuration/.
Diagnostiek
Sectie met titel “Diagnostiek”De orchestrator levert zijn eigen diagnostiek. Voer een dry run uit (composer build:dry) om de bronrepository’s af te drukken die gelezen zouden worden en wat elke fase zou doen, zonder iets te schrijven. Elke fase drukt een vinkje bij succes of een fout met naam af. Er is geen apart diagnose-subcommando en geen bin/-toegangspunt. De builder draait via scripts/build.php of de bijbehorende Composer-script-aliassen. Geverifieerd aan de hand van scripts/build.php (step(), de dryRun-takken), scripts/merge-sources.php (het dry-run-pad van run()) en composer.jsonscripts.
Zie ook
Sectie met titel “Zie ook”- /integrations/backport/overview/ — wat de builder is en wat deze produceert.
- /integrations/backport/integration/ — het integratiecontract van de build-host.
- /integrations/backport/configuration/ — Rector-configuraties en de vlagreferentie.
- /integrations/backport/troubleshooting/ — foutreferentie per fase.