İçeriğe geç
getnextpdf.com

Enterprise sürüm

Release — Derinlemesine başvuru

NextPDF\Enterprise\Release ad alanı, bir ürün sürümünü değişmez, türlenmiş değer nesneleri olarak modeller. Genel yüzeyi yedi final sınıf ve beş string tabanlı enum’dan oluşur. ReleaseManifest, yapıt başına ArtifactManifest girişlerini ve tedarik zinciri kanıt yollarını bir araya toplar. BuildProfile, tek bir yapıt varyantı için tek doğruluk kaynağıdır. ArtifactNamer ve PackageMapping, bir profilden deterministik dosya adları ve Composer paket kimliği türetir. PublishingPlan::fromProfiles, her profili doğru kanal ve erişim sınırına sahip türlenmiş PublishingTarget girişlerine çözümler. ReleaseStatus, sürüm yaşam döngüsünü türler. Modül hiçbir I/O, ağ çağrısı veya kriptografi gerçekleştirmez; saf meta veri modellemesidir.

Bu yetenek NextPDF Enterprise (nextpdf/enterprise) içinde sevk edilir ve bir Enterprise düzeyi lisans zarfıyla etkinleşir. Bu yetkilendirmeye sahip olmayan bir dağıtım, yeteneğin sınıflarını yüklemez. Sürümleri karşılaştırın ve bir lisans alın.

Bu yüzey, nextpdf/enterprise paket sınırıyla lisanslanır ve özellik başına ayrı bir yetenek kodu yoktur. Core ve Pro, bir release-modelleme katmanı sevk etmez.

Terminal window
composer require nextpdf/enterprise:^3
SembolParametrelerVarsayılan davranışDöndürürFırlatır veya şununla başarısız olurNotlar
ReleaseManifest::__constructversion, sourceCommit, builtAt, artifacts = [], sbomPath = null, gpgSignature = null, checksumPath = nullDeğişmez en üst düzey release belgesini oluştururörnekfinal readonly; SCHEMA_VERSION değeri '1.0'; eklemeli alanlar için minör, bozucu değişiklikler için majör; 3.0.0 sürümünden beri
ReleaseManifest::createWithDefaultsstring $version, string $sourceCommit, DateTimeImmutable $builtAt, array $artifacts = []Varsayılan SBOM, imza ve sağlama toplamı dosya adlarını ArtifactNamer aracılığıyla önceden bağlarselfRelease derleyicileri için kanonik giriş noktası; tek tek yolları geçersiz kılmak için yapıcıyı kullanın
ReleaseManifest::toArray / ::toJsonyokBildirimi tüm yapıt girişleriyle birlikte serileştirirarray / JSON dizesitoJson: kodlama hatasında JsonExceptionDüzgün biçimlendirilmiş, kaçışsız eğik çizgiler; ATOM biçiminde built_at
ReleaseManifest::validateyokYapıt listesinin boş olmadığını ve her yapıtın release sürümü ve commit ile eşleştiğini denetlerhataların list<string> değeri; boş, geçerli anlamına gelirAsla fırlatmazÇağıranlar, boş olmayan bir listeyi bir kusur olarak ele almalıdır
ArtifactManifest::__constructfilename, version, sourceCommit, edition, deliveryMode, encodingTechnology, channel, phpTarget, sha256, ioncubeExpire, builtAtDerlenen bir yapıtı kaydeder: neyin derlendiği, nasıl derlendiği ve nasıl doğrulanacağıörnekfinal readonly; süresi dolmayan yapıtlar için ioncubeExpire değeri null’dır
ArtifactManifest::fromProfileBuildProfile $profile, string $version, string $sourceCommit, string $sha256, ?DateTimeImmutable $builtAt = nullDosya adını ve tüm profil boyutlarını türetirselfbuiltAt, varsayılan olarak geçerli zamanı alır
ArtifactManifest::toArrayyokJSON kodlaması için serileştirirarray<string, string|null>Enum alanları, kendi tabanlı string değerlerine serileştirilir
BuildProfile::__construct / ::fromArrayprofil alanları / array $dataBir yapıt varyantı tanımlar; adlandırma, bildirim ve plan için tek doğruluk kaynağıörnek / selffromArray: eksik veya boş bir zorunlu alanda InvalidArgumentExceptionZorunlu anahtarlar: name, edition, delivery, encoding_technology, channel, php_target
BuildProfile::requiresEncoding / ::isEvaluationyokProfil boyutları üzerinde yüklem yardımcılarıboolKodlama, DeliveryMode::Encoded ve EncodingTechnology::IonCube değerlerinin bir arada olmasını gerektirir
ArtifactNamer::formatBuildProfile $profile, string $versionnextpdf-{edition}-{delivery}-{channel}-php{target}-{version}.zip üretirnon-empty-stringDeterministik; noktalar PHP hedefinden çıkarılır (8.4, php84 olur)
ArtifactNamer::checksumFile / ::signatureFile / ::sbomFile / ::manifestFilestring $version (manifestFile: yok)SHA256SUMS-{v}.txt, SHA256SUMS-{v}.txt.asc, sbom-{v}.cdx.json, release-manifest.json üretirnon-empty-stringSBOM dosya adı, Core’un SBOM üretecinin yazdığı CycloneDX belgesiyle eşleşir
PackageMapping::packageName / ::resolvePackageNameBuildProfile / LicenseEdition + LicenseChannelnextpdf/pro veya nextpdf/enterprise ile eşler; değerlendirme kanalı -evaluation eklernon-empty-stringbilinmeyen bir edition’da InvalidArgumentExceptionAyrı değerlendirme ad alanı, ücretli yapıtlarla karışmayı önler
PackageMapping::distUrlPatternBuildProfile $profile, string $versionKanonik yapıt deposundaki yapıt indirme URL’sini çözümlernon-empty-stringKodlanmış ve düz metin bir paket adını paylaşır; dist URL’leri farklıdır
PackageMapping::accessBoundary / ::artifactOrigin / ::consumptionChannel / ::allPackageNamesBuildProfile / yok / yok / yokSınır, lisans kanalını izler; sabit kaynak ve tüketim kanalları; müşteriye yönelik tüm paket adlarıAccessBoundary / DistributionChannel / DistributionChannel / list<non-empty-string>Core bir premium paket değildir ve ad listesinden dışlanır
PublishingPlan::fromProfilesarray $profiles, string $version, PublishingEnvironment $environment = StagingProfil başına iki hedef çözümler: biri yapıt kaynağı, biri tüketim katmanıselfOrtam, varsayılan olarak Staging’dir; production her zaman açık bir seçimdir
PublishingPlan::targetsByBoundary / ::targetsByChannel / ::packageNamesAccessBoundary / DistributionChannel / yokÇözümlenen hedefler üzerinde filtreleme ve sıralama yardımcılarılist<PublishingTarget> / list<PublishingTarget> / list<non-empty-string>packageNames, sıralanır ve yinelemesi kaldırılır
PublishingPlan::validateyokHedeflerin boş olmadığını, sürümlerin planla eşleştiğini ve hiçbir değerlendirme paketinin ücretli bir sınırda yer almadığını denetlerhataların list<string> değeri; boş, geçerli anlamına gelirAsla fırlatmazHerhangi bir yükleme adımından önce çalıştırın
PublishingPlan::toArrayyokKuru çalıştırma çıktısı ve günlükleme için serileştirirarray<string, mixed>target_count ve paket listesini içerir
PublishingTarget::fromProfileBuildProfile $profile, string $version, PublishingEnvironment $environment, DistributionChannel $channelBir kanal için paket adını, erişim sınırını ve yapıt dosya adını çözümlerselffinal readonly; toArray, günlükleme için serileştirir
AccessBoundaryenum: Paid, Evaluation, InternalisCustomerFacing, yalnızca Paid ve Evaluation için true’dur'paid', 'evaluation', 'internal' ile tabanlanırrequiresAuthentication, her sınır için true döndürür
DistributionChannelenum: GitHubReleases, PrivatePackagist, DirectDownloadisArtifactOrigin ve isConsumptionLayer, iki rolü ayırır'github_releases', 'private_packagist', 'direct_download' ile tabanlanırDirectDownload, gelecekteki imzalı URL kanalı için ayrılmıştır
EncodingTechnologyenum: IonCube, NoneTeslim biçiminden ayrı olarak kodlama aracını adlandırır'ioncube', 'none' ile tabanlanırBir düz metin yapıtı her zaman None bildirir
PublishingEnvironmentenum: Staging, ProductionisCustomerFacing, yalnızca Production için true’dur'staging', 'production' ile tabanlanırStaging, dahilî bir doğrulama hedefidir
ReleaseStatusenum: Built, Audited, Staged, Published, Revoked, SupersededcanPromote, nextStatus, isCustomerVisible, isTerminal, yaşam döngüsünü türlernextStatus, ?self döndürürYükseltme zinciri Built → Audited → Staged → Published; Revoked ve Superseded sonlandırıcıdır

Giriş noktası imzaları, kaynaktan birebir:

public static function createWithDefaults(string $version, string $sourceCommit, DateTimeImmutable $builtAt, array $artifacts = []): self
public static function fromProfile(BuildProfile $profile, string $version, string $sourceCommit, string $sha256, ?DateTimeImmutable $builtAt = null): self
public static function fromArray(array $data): self
public static function format(BuildProfile $profile, string $version): string
public static function fromProfiles(array $profiles, string $version, PublishingEnvironment $environment = PublishingEnvironment::Staging): self
public static function fromProfile(BuildProfile $profile, string $version, PublishingEnvironment $environment, DistributionChannel $channel): self
  • Her sınıf final’dır; her değer sınıfı readonly’dir. Yapım, tüm durumu sabitler. Modül hiçbir dosya sistemi, ağ veya kriptografik işlem gerçekleştirmez.
  • ReleaseManifest, bir sürüm için değişmez en üst düzey belgedir: anlamsal sürüm, kaynak commit, derleme zaman damgası, yapıt listesi ve isteğe bağlı tedarik zinciri kanıt yolları (SBOM, GPG imzası, sağlama toplamları). Şema sürümü, eklemeli için minör ve bozucu için majördür.
  • BuildProfile, bir yapıtın ne içerdiği ve nasıl paketlendiği için tek doğruluk kaynağıdır. Adlandırma, bildirim ve plan hepsi profilden türetilir; ikincil bir yapılandırma kaynağı yoktur.
  • EncodingTechnology, kodlama aracını adlandırır; DeliveryMode (Licensing modülünden), teslim edilen biçimi adlandırır. İkisi bilinçli olarak ayrıdır ve bir düz metin yapıtı her zaman EncodingTechnology::None bildirir.
  • DistributionChannel, bir yapıt kaynağını (ikili depolama; yükleme hedefi) bir paket tüketim katmanından (bir composer require çağrısının okuduğu kayıt defteri) ayırır. Kaynak, ikiliyi saklar; tüketim katmanı, ona işaret eden meta veriyi sunar.
  • AccessBoundary, Paid, Evaluation ve Internal değerlerini sıralar. Her sınır kimlik doğrulaması gerektirir. Internal yapıtlar CI, QA ve staging’e hizmet eder ve asla müşteriye yönelik değildir.
  • PublishingPlan::fromProfiles, her profili tam olarak iki hedefe çözümler: bir yapıt-kaynağı hedefi ve bir tüketim-katmanı hedefi; erişim sınırı, profilin lisans kanalından türetilir; böylece ücretli ve değerlendirme yapıtları doğru yönlendirilir.
  • Plan, amaçlanan hedefleri betimler, taşımayı değil. Gerçek yükleme, çevreleyen release araçları tarafından gerçekleştirilir ve bildirim, tedarik zinciri kanıtını kaydeder — ancak kendisi üretmez.
  • ReleaseStatus, yaşam döngüsünü türler: Built → Audited → Staged → Published; Revoked ve Superseded, Published’dan sonlandırıcı çıkışlardır. Yalnızca Published müşteriye görünürdür; canPromote, Published’dan itibaren false’dur.
  • ReleaseManifest::validate ve PublishingPlan::validate, tutarlılık hatalarını string listeleri olarak raporlar ve asla fırlatmaz. Boş bir liste, tek geçerli sonuçtur.
  • Eksik, string olmayan veya boş bir zorunlu alanla BuildProfile::fromArray: alanı adlandıran InvalidArgumentException.
  • Boş veya string olmayan bir ioncube_expire ile BuildProfile::fromArray: null (süresi dolmayan) olarak normalleştirilir. encode_paths ve exclude_paths içindeki string olmayan veya boş girişler sessizce düşürülür.
  • Bilinen haritanın dışında bir edition ile PackageMapping::resolvePackageName: InvalidArgumentException.
  • Kodlanamayan veride ReleaseManifest::toJson: JsonException. Serileştirme JSON_THROW_ON_ERROR kullanır; sessiz bir geri dönüş yoktur.
  • ReleaseManifest::validate, boş bir yapıt listesini ve sürümü veya kaynak commit’i release’den farklı olan herhangi bir yapıtı hata olarak raporlar.
  • PublishingPlan::validate, boş bir hedef listesini, plandan sapan herhangi bir hedef sürümünü ve ücretli bir sınıra çözümlenen herhangi bir değerlendirme paketini raporlar.
  • ReleaseStatus::nextStatus, Published, Revoked ve Superseded’dan null döndürür. Çağıranlar null’ı ele almalıdır; sarmalama yoktur.
  • Kaynak ve tüketim-katmanı kanalları farklıdır; bir composer require çağrısını yapıt kaynağına yöneltmeyin.
  • Internal-sınırlı yapıtlar asla müşteriye yönelik değildir; bunları bir müşteri kanalına yönlendirmek açık bir modelleme hatasıdır.
  • Bu modül hiçbir kriptografik işlem gerçekleştirmez. GPG imzalama ve sağlama toplamı üretimi haricidir ve burada yalnızca referans alınır.

Bu modül için hiçbir standart uygunluğu iddia edilmez; bir release-modelleme katmanıdır ve NextPDF hiçbir sertifikaya sahip değildir. Varsayılan SBOM dosya adı (sbom-{version}.cdx.json), Core’un SBOM üretecinin yazdığı CycloneDX belgesiyle eşleşir; bildirim, o kanıtı referans alır ve doğrulamaz. GPG imzaları ve sağlama toplamları, çevreleyen release işlem hattı tarafından üretilir ve doğrulanır. Bir kanıt yolunu kaydetmek yetenektir, beyan değil: bir bildirim tek başına kanıt değildir, köken beyan etmez, bir sürümü sertifikalandırmaz ve hukuki tavsiye oluşturmaz.

  • ReleaseManifest::createWithDefaults’ı tercih edin; böylece kanıt dosya adları her zaman ArtifactNamer ile uyumlu olur. Ham yapıcıyı, kasıtlı yol başına geçersiz kılmalar için ayırın.
  • Herhangi bir yayımlama adımından önce her iki validate() geçidini CI’de çalıştırın ve boş olmayan bir hata listesinde işlem hattını başarısız kılın.
  • PublishingPlan::fromProfiles, varsayılan olarak PublishingEnvironment::Staging’i alır. Production’ı açıkça geçirin; bu modülde hiçbir şey bir ortamı örtük olarak yükseltmez.
  • Serileştirilmiş bildirimler enum tabanlı değerler (paid, encoded, ioncube vb.) ve ATOM zaman damgaları taşır; o stringleri tel sözleşmesi olarak ele alın.
  • Değerlendirme yapıtları ayrı bir paket ad alanında (-evaluation soneki) bulunur. Composer yapılandırmanızda ücretli ve değerlendirme kayıt defterlerini ayrı tutun.
  • Kanal başına yönlendirme, kimlik bilgileri ve depolama operatörün sorumluluğundadır. Plan, araçlara bir yapıtın nereye ait olduğunu söyler, ona nasıl kimlik doğrulanacağını değil.

Bu sayfa yalnızca dışarıdan gözlemlenebilir davranışı ve desteklenen genel API yüzeyini belgeler. Dahilî ad alanı yolları, yardımcı sınıflar, mekanizma tabloları, runbook dosya adları ve bilet önekleri kapsam dışıdır.