Enterprise editie
Release
In het kort
Sectie met titel “In het kort”NextPDF Enterprise modelleert een release als getypeerde value objects — een releasemanifest, manifesten per artefact, build-profielen, distributiekanalen en toegangsgrenzen — en leidt een publicatieplan af dat elk artefact naar het juiste kanaal en de juiste toegangsgrens routeert.
Beschikbaarheid en licenties
Sectie met titel “Beschikbaarheid en licenties”Deze functie wordt geleverd in NextPDF Enterprise (nextpdf/enterprise) en wordt geactiveerd met een licentie-envelop op Enterprise-niveau. Een implementatie zonder die rechten laadt de klassen van de functie niet. Vergelijk edities en vraag een licentie aan.
Installatie
Sectie met titel “Installatie”composer require nextpdf/enterprise:^3Conceptueel overzicht
Sectie met titel “Conceptueel overzicht”ReleaseManifest is het onveranderlijke document op het hoogste niveau voor een versie. Het registreert de semantische versie, de source commit, het build-tijdstempel, de lijst met manifesten per artefact en optionele bewijspaden voor de toeleveringsketen (SBOM, GPG-handtekening, checksums). De schemaversie volgt minor-voor-additief, major-voor-breaking.
ArtifactManifest registreert één gebouwd artefact: de canonieke bestandsnaam, versie, source commit, doeleditie, leveringsmodus, encoderingstechnologie, distributiekanaal, doel-PHP-versie, SHA-256-digest, optionele encoderingsvervaldatum en build-tijdstempel. EncodingTechnology onderscheidt de tool die is gebruikt om een artefact te encoderen van de vraag of het überhaupt is geëncodeerd; een cleartext-artefact heeft altijd None.
DistributionChannel scheidt twee aspecten expliciet: een artefactoorsprong (binaire opslag) en een pakketconsumptielaag (het register dat een composer require leest). AccessBoundary bepaalt wie een artefact mag benaderen — betalende klanten, tijdgebonden evaluatie of interne CI/QA/staging die nooit klantgericht is — en elke grens vereist authenticatie.
PublishingPlan wordt afgeleid uit de build-profielen en het releasemanifest. Elk profiel resolveert naar publicatiedoelen: een artefactoorsprong-doel en een consumptielaag-doel, met de juiste toegangsgrens toegepast, zodat betaalde en evaluatie-artefacten naar de juiste plek worden gerouteerd.
Waarom het zo werkt
Sectie met titel “Waarom het zo werkt”De dragende beslissing is om een release te modelleren als onveranderlijke getypeerde value objects, niet als losse configuratie. Artefactoorsprong en consumptielaag zijn onderscheiden, enum-getypeerde aspecten, en toegangsgrenzen zijn expliciet. Zo komt een verkeerd gerouteerd artefact — een interne build die op een klantkanaal wordt geplaatst — naar boven als een modelleringsfout, niet als een stilzwijgende productiefout. Het plan blijft afgeleid in plaats van gezaghebbend: het benoemt beoogde doelen terwijl je release-tooling het transport uitvoert. Dezelfde objecten resolveren via het Core-contract, zodat een consument die van editie upgradet geen aanroepende code hoeft te wijzigen. Die continuïteit is het punt van een open-core-grens — je koopt het Enterprise-oppervlak, geen herschrijving. Ontwerpachtergrond: Open core, geen lock-in.
API-oppervlak
Sectie met titel “API-oppervlak”| Klasse | Verantwoordelijkheid |
|---|---|
ReleaseManifest | Onveranderlijk releasedocument op het hoogste niveau. |
ArtifactManifest | Metadata en verificatievelden per artefact. |
BuildProfile | Een te publiceren buildconfiguratie. |
DistributionChannel | Enum voor oorsprong versus consumptielaag-kanaal. |
AccessBoundary | Enum Paid / Evaluation / Internal-toegang. |
EncodingTechnology | Enum voor encoderingstool (bijv. encoded / none). |
PublishingPlan / PublishingTarget | Afgeleid plan en routering per doel. |
Codevoorbeeld — Snelstart
Sectie met titel “Codevoorbeeld — Snelstart”use NextPDF\Enterprise\Release\PublishingPlan;
$plan = PublishingPlan::fromProfiles($profiles, '3.1.0');Codevoorbeeld — Productie
Sectie met titel “Codevoorbeeld — Productie”use NextPDF\Enterprise\Release\PublishingPlan;use NextPDF\Enterprise\Release\PublishingEnvironment;
$plan = PublishingPlan::fromProfiles( $profiles, '3.1.0', PublishingEnvironment::Production,);
foreach ($plan->targets as $target) { $logger->info('release.target', [ 'version' => $plan->version, 'channel' => $target->channel->value, ]);}Randgevallen en valkuilen
Sectie met titel “Randgevallen en valkuilen”- De artefactoorsprong en de consumptielaag zijn onderscheiden kanalen. De oorsprong slaat de binary op; de consumptielaag levert de metadata die ernaar verwijst. Haal ze niet door elkaar bij het redeneren over waar een
composer requireresolveert. - Een cleartext-artefact rapporteert altijd
EncodingTechnology::None; het encoderingstechnologie-veld beantwoordt “welke tool”, niet “was het beschermd”. - Artefacten met een Internal-toegangsgrens zijn nooit klantgericht; ze naar een klantkanaal routeren is een configuratiefout die dit model expliciet wil maken.
- Het publicatieplan is afgeleid, niet gezaghebbend voor transport — het beschrijft beoogde doelen; de werkelijke upload wordt uitgevoerd door je release-tooling.
Prestaties
Sectie met titel “Prestaties”Planafleiding is lineair in het aantal build-profielen en produceert een klein aantal doelen per profiel. De value objects zijn onveranderlijk en goedkoop te construeren.
Beveiligingsnotities
Sectie met titel “Beveiligingsnotities”Het releasemanifest draagt bewijspaden voor de toeleveringsketen (SBOM, GPG-handtekening, checksums). Deze module registreert en routeert die referenties; ze produceert zelf geen handtekeningen en attesteert geen herkomst. Behandel het manifest als metadata die door je release-pijplijn moet worden geverifieerd, niet als bewijs op zichzelf.
Datalocatie en PII-mitigaties
Sectie met titel “Datalocatie en PII-mitigaties”Releasemanifesten bevatten build- en artefactmetadata, geen persoonsgegevens. Pas je gebruikelijke controles toe op artefactopslag.
Veilige telemetrie en logopschoning
Sectie met titel “Veilige telemetrie en logopschoning”Releaselogs zouden versie en kanaal moeten registreren, geen ondertekeningssleutelmateriaal of interne opslagpaden.
Conformiteit
Sectie met titel “Conformiteit”Er wordt geen conformiteit met standaarden geclaimd voor deze module; het is een releasemodelleringslaag. Het bewijs voor de toeleveringsketen (SBOM, handtekeningen, checksums) wordt door het manifest gerefereerd en door je release-tooling geproduceerd en geverifieerd.
FIPS-modusgedrag
Sectie met titel “FIPS-modusgedrag”Deze module voert geen cryptografische bewerkingen uit. GPG-ondertekening en checksum-generatie worden uitgevoerd door externe release-tooling en hier alleen gerefereerd.
Dreigingsmodel
Sectie met titel “Dreigingsmodel”De invoer bestaat uit door de caller aangeleverde build-profielen en manifestgegevens. Het model maakt het onderscheid tussen oorsprong-versus-consumptie en de toegangsgrens expliciet, zodat misrouting (bijvoorbeeld het blootstellen van een intern artefact) een zichtbare modelleringsfout is in plaats van een stilzwijgende.
Gedragscontract
Sectie met titel “Gedragscontract”ReleaseManifestis het onveranderlijke document op het hoogste niveau voor een versie; de schemaversie volgt minor-voor-additief, major-voor-breaking.DistributionChannelhoudt artefactoorsprong en pakketconsumptielaag als onderscheiden aspecten; ze door elkaar halen is een modelleringsfout die dit type expliciet maakt.AccessBoundaryonderscheidt Paid / Evaluation / Internal, en elke grens vereist authenticatie; een Internal-artefact is nooit klantgericht.PublishingPlanwordt afgeleid uit build-profielen en het releasemanifest; het beschrijft beoogde doelen en is niet gezaghebbend voor transport.
Publicatiegrens
Sectie met titel “Publicatiegrens”Deze pagina documenteert alleen extern waarneembaar gedrag en het ondersteunde publieke API-oppervlak. Interne namespace-paden, helperklassen, mechanismetabellen, runbook-bestandsnamen en ticketprefixen vallen buiten de scope.
Core-terugval
Sectie met titel “Core-terugval”NextPDF Core heeft geen releasemodelleringslaag. Een Core-only-consument die releasemanifesten, build-profielen of een publicatieplan nodig heeft, moet ze zelf modelleren.
Pro-terugval
Sectie met titel “Pro-terugval”NextPDF Pro biedt niet de getypeerde releasemanifesten, build-profielen, toegangsgrenzen of het afgeleide publicatieplan; die worden alleen geleverd in het nextpdf/enterprise-pakket. Een Pro-only-implementatie heeft geen Enterprise-component om een releasemodelleringsverzoek te vervullen. Zie het Enterprise-overzicht voor het Enterprise-oppervlak.
Opmerking over de Enterprise-grens
Sectie met titel “Opmerking over de Enterprise-grens”Het manifestschema, het onderscheid tussen oorsprong-versus-consumptie en de routering op basis van toegangsgrenzen worden alleen op gedragsniveau beschreven. De interne kanaalresolutietabellen en de interne publicatiedoel-bedrading vallen buiten de scope van het publieke oppervlak en worden hier niet gereproduceerd.
Implementatiegrens
Sectie met titel “Implementatiegrens”Het publicatieplan is afgeleide metadata, niet het transport: de werkelijke artefactupload wordt uitgevoerd door je release-tooling. Het bewijs voor de toeleveringsketen (SBOM, GPG-handtekening, checksums) wordt door het manifest gerefereerd en door je release-pijplijn geproduceerd en geverifieerd, niet door deze module. Routering, referenties en opslag voor elk kanaal vallen onder de verantwoordelijkheid van de operator.
Juridische-compliancegrens
Sectie met titel “Juridische-compliancegrens”Deze pagina beschrijft een releasemodelleringslaag. Deze registreert en routeert referenties naar bewijs voor de toeleveringsketen; ze produceert zelf geen handtekeningen, attesteert geen herkomst, certificeert geen release en vormt geen juridisch advies. Het manifest als bewijs op zichzelf behandelen is onjuist; de verificatie wordt uitgevoerd door je release-pijplijn. Beoordelen of een release voldoet aan je contractuele of regelgevende verplichtingen is jouw verantwoordelijkheid.