SPI kararlılığı kuralları
Bir bakışta
“Bir bakışta” başlıklı bölümNextPDF’nin hizmet sağlayıcı arayüzü, Semantic Versioning kurallarını izler. Her genel sözleşme bir @stability etiketiyle bir geriye dönük uyumluluk sözü taşır. Hangi sözleşmelere bağımlı olabileceğinize karar verirken bu kuralları kullanın.
Kurulum
“Kurulum” başlıklı bölümcomposer require nextpdf/core:^3Kavramsal genel bakış
“Kavramsal genel bakış” başlıklı bölümHizmet sağlayıcı arayüzü, NextPDF\Contracts ve NextPDF\Event ad alanlarındaki genel sözleşmeleri kapsar. Bir tür, yalnızca kaynak PHPDoc’u bir @stability etiketi taşıyorsa arayüzün parçasıdır. Sınırı etiket belirler. Etiketi olmayan bir tür, PHP tarafından public olarak sunulsa bile dahilidir.
NextPDF, Semantic Versioning 2.0.0 kurallarını izler. Bir stable sözleşmedeki kırıcı değişiklik, ana sürümün artırılmasını gerektirir. Yeni bir sözleşme veya kırıcı olmayan bir ekleme, ikincil sürümü artırır. Bir hata düzeltmesi, yama sürümünü artırır.
@stability etiketi
“@stability etiketi” başlıklı bölümHer sözleşme üç kararlılık değerinden birini bildirir:
| Etiket | Anlamı | Değişiklik kuralı |
|---|---|---|
stable | Üretime hazırdır. Bağımlı olmak güvenlidir. | İkincil veya yama sürümünde kırıcı değişiklik yapılmaz. Yeni yöntemler yalnızca varsayılan bir davranışla veya yeni bir sözleşmede eklenir. |
experimental | Kullanılabilir, ancak henüz dondurulmamıştır. | Arayüz, önce kullanımdan kaldırma bildirimi verilerek bir ikincil sürümde değişebilir. |
deprecated | Kaldırılmak üzere planlanmıştır. | Sözleşme, yerine geçeni ve kaldırılacağı sürümü belirtir. |
NextPDF, sözleşme başına verilen her sözü oluşturulan sözleşmeler haritasına kaydeder ve bu haritayı her sürümde kaynaktan yeniden oluşturur. Söz metni, ilgili sözleşme için geçerli kuralın tamamını verir. Sözleşmenin kaynak PHPDoc’unu tek doğruluk kaynağı olarak ele alın.
Geriye dönük uyumluluk sözü sınıfları
“Geriye dönük uyumluluk sözü sınıfları” başlıklı bölümSözleşmeler haritası, her sözü dört sınıftan birine kaydeder:
- Arayüz sözü. “İkincil veya yama sürümünde kırıcı değişiklik yapılmaz. Yeni yöntemler yalnızca varsayılan bir uygulamayla eklenir.” Çoğu
stablearayüz için geçerlidir;FontRegistryInterface,SignerInterface,HsmSignerInterfaceveHtmlSecurityPolicyInterfacebunlara dahildir. - Numaralandırma sözü. “Hiçbir durum kaldırılmaz. İkincil bir sürümde yeni durumlar eklenebilir.”
stablenumaralandırmalar için geçerlidir; örneğinAlignment,OrientationveOutputDestination. - Dondurulmuş değer nesnesi sözü. “Yapıcı imzası ve genel özellikler dondurulur. Yeni yöntemler eklenebilir.”
TextPreprocessResult,TextSegmentgibi değer nesneleri ve bunlara bağlı olay yükleri için geçerlidir. - Deneysel söz. “Arayüz, kullanımdan kaldırma bildirimiyle birlikte ikincil bir sürümde değişebilir.”
experimentalsözleşmeler için geçerlidir; örneğinDeferredSignerInterface,TimestampProviderInterface,CursorInterfaceveStreamingWriterInterface.
Bir final sınıf — örneğin EventDispatcher veya ListenerProvider — genel yöntem imzalarını dondurur. Bir final sınıfı genişletmeniz gerekiyorsa kompozisyon kullanın. Alt sınıf olarak türetmeyin.
Deneysel akış sözleşmeleri
“Deneysel akış sözleşmeleri” başlıklı bölümCursorInterface ve StreamingWriterInterface, experimental durumundadır (3.1.0 sürümünden beri). NextPDF, her iki sözleşme için de nihai, test edilmiş motor uygulamaları sağlar; uygulama sınıfları dahilidir ve genel yüzeyin parçası değildir. Akış davranışını genel experimental sözleşme üzerinden kullanırsınız. Çoğu durumda sözleşmeyi kendiniz uygulamazsınız.
Sözleşme experimental olduğundan, imzası önce kullanımdan kaldırma bildirimi verilerek bir ikincil sürümde değişebilir (deneysel söz). Üretimde bu sözleşmeye bağımlı olmadan önce sıkıca sabitleyin veya kendi adaptörünüzün arkasına alın. Akış sözleşmesini dondurulmuş bir nokta olarak değil, kararlılığa doğru ilerleyen bir genişletme noktası olarak ele alın.
API yüzeyi
“API yüzeyi” başlıklı bölümBu sayfada çalışma zamanı uygulama programlama arayüzü (API) bulunmaz. İlgili yüzey, her genel sözleşmedeki @stability PHPDoc etiketi ile sözleşme başına verilen sözü bir araya getiren, yeniden oluşturulmuş sözleşmeler haritasıdır.
Kod örneği — hızlı başlangıç
“Kod örneği — hızlı başlangıç” başlıklı bölümBir sözleşmeye bağımlı olmadan önce kararlılığını kaynağından okuyun.
<?php
declare(strict_types=1);
use ReflectionClass;
$doc = (new ReflectionClass(\NextPDF\Contracts\FontRegistryInterface::class)) ->getDocComment();
// Look for the "@stability stable" line in the contract PHPDoc.\assert(\is_string($doc) && \str_contains($doc, '@stability stable'));Kod örneği — üretim
“Kod örneği — üretim” başlıklı bölümBir Composer sürüm kısıtlaması, bir stable sözleşme için kırıcı değişikliklerin gerçekleşebileceği ana sürümü sabitler.
{ "require": { "nextpdf/core": "^3.0" }}Şunu kullanın: ^3.0 — herhangi bir stable sözleşmede kırıcı değişiklik almadan ikincil ve yama sürümlerini alırsınız. Bir experimental sözleşmeye bağımlı olduğunuzda daha sıkı sabitleyin; çünkü bir experimental sözleşme bir ikincil sürümde değişebilir.
Uç durumlar & tuzaklar
“Uç durumlar & tuzaklar” başlıklı bölüm- Görünürlük değil, etiket.
publicolarak işaretlenmiş bir PHP yöntemi, onu bildiren tür bir@stabilityetiketi taşımadıkça hizmet sağlayıcı arayüzünün parçası değildir. - Deneysel kayma. Bir
experimentalsözleşme bir ikincil sürümde değişebilir. Sıkıca sabitleyin veya kendi adaptörünüzün arkasına alın. Bu, birlikte gelen uygulamaları olsa bile akış sözleşmeleri için geçerlidir. - Yeni varsayılan yöntemler. Bir
stablearayüz, varsayılan davranışa sahip bir yöntem kazanabilir. Kendi uygulamanızın davranışı açık kalsın diye yükseltme yaptığınızda yeni yöntemi uygulayın. - Sürüm eşliği. NextPDF Pro ve NextPDF Enterprise aynı kuralları izler. Core’da hedeflediğiniz bir sözleşme, aynı sözleşmenin bir Premium uygulamasına karşı geçerli kalır.
Kullanımdan kaldırma yaşam döngüsü
“Kullanımdan kaldırma yaşam döngüsü” başlıklı bölümBir sözleşme, tanımlı bir yaşam döngüsü izler:
- İşaretleme. Sahibi, kaynak PHPDoc’unda
@stability deprecatedolarak ayarlar ve yerine geçeni ile kaldırılacağı sürümü kaydeder. - Bildirim. Kullanımdan kaldırma, işaretlemenin yapıldığı sürümün değişiklik günlüğünde duyurulur.
- Örtüşme. Kullanımdan kaldırılan sözleşme ve yerine geçeni en az bir ikincil sürüm boyunca bir arada bulunur.
- Kaldırma. Sözleşme, belirtilen ana sürümde kaldırılır. Kaldırma asla bir ikincil veya yama sürümünde gerçekleşmez.
Bir sözleşme deprecated olarak işaretlenir işaretlenmez bir yükseltme planlayın. Yerine geçeni her zaman belirtilir.
Performans
“Performans” başlıklı bölümBu sayfa politika tanımlar. Çalışma zamanı maliyeti yoktur.
Güvenlik notları
“Güvenlik notları” başlıklı bölümİmzalama sözleşmeleri stable durumundadır ve arayüz sözüne uyar. Bir imzalama sözleşmesindeki yeni bir yöntem yalnızca varsayılan bir davranışla veya yeni bir sözleşmede gelir; bu nedenle donanım destekli bir uygulama bir ikincil yükseltmede bozulmaz. Bir ana yükseltmeden önce değişiklik günlüğünü inceleyin; çünkü bir ana sürüm bir stable sözleşmeyi değiştirebilir.
Uygunluk
“Uygunluk” başlıklı bölümBu sürümleme kuralları, Semantic Versioning 2.0.0 ile uyumludur. Değişiklik günlüğü oluşturma, Conventional Commits 1.0.0 kurallarını izler.
Ticari bağlam
“Ticari bağlam” başlıklı bölümNextPDF Pro ve NextPDF Enterprise, Core ile aynı hizmet sağlayıcı arayüzü kararlılık kurallarını izler. Core’da hedeflediğiniz bir sözleşme, o sözleşmenin Premium uygulamasına karşı geçerli kalır; böylece genişletme kodunuz sürümler arasında taşınabilir olur.
Ayrıca bakınız
“Ayrıca bakınız” başlıklı bölüm- Genişletme yazımına genel bakış
- Özel yazı tipleri
- Eylem tetikleyicileri ve olay dinleyicileri
- KMS sağlayıcı sözleşmesi
İlgili sözleşmeler ve modüller
“İlgili sözleşmeler ve modüller” başlıklı bölüm- Sözleşmeler modülü başvurusu — oluşturulan sözleşmeler haritası ve sözleşme başına verilen söz metni.
- Akış sözleşmeleri başvurusu —
experimentalakış sözleşmeleri ve birlikte gelen uygulamaları. - İmzalama sözleşmeleri başvurusu — aynı kurallara tabi
stableveexperimentalimzalama sözleşmeleri. - Genişletme yazımına genel bakış — her
@stabilityetiketinin pratikte ne anlama geldiği. - Eylem tetikleyicileri ve olay dinleyicileri — bu kuralların yönettiği
finalgönderici ve deneysel yükler.
Sözlük, kararlılık etiketi ve geriye dönük uyumluluk sözü terimlerini tanımlar. Standart tanımlar için yayımlanmış sözlüğe bakın.