İçeriğe geç
getnextpdf.com

Enterprise sürüm

PHPStan — Derinlemesine başvuru

  • Tek bir genel sınıf: use deyimleri üzerinde çalışan özel bir PHPStan kuralı olan EditionBoundaryRule.
  • Tek yönlü sürüm bağımlılık sırasını zorlar. Core hiçbir zaman Pro veya Enterprise içe aktarmaz. Pro hiçbir zaman Enterprise içe aktarmaz.
  • İhlaller, suçlu use satırında nextpdf.editionBoundaryViolation tanımlayıcısını raporlar.
  • Yalnızca derleme zamanı. Kuralın çalışma zamanı yolu yoktur ve oluşturulan PDF’ler üzerinde etkisi yoktur.
  • nextpdf/enterprise içinde gelir. Kayıt, standart PHPStan yapılandırmasını kullanır.

Bu yetenek NextPDF Enterprise (nextpdf/enterprise) içinde gelir ve Enterprise katmanı bir lisans zarfıyla etkinleşir. Çalışma zamanı yolu olmayan, derleme zamanı bir statik çözümleme kuralıdır: nextpdf/enterprise paket sınırı onu kapılar ve özellik başına ayrı bir yetenek kodu taşımaz. Core ve Pro bir eşdeğer sunmaz. Sürümleri karşılaştırın ve bir lisans edinin.

Paketi kurun, ardından kuralı PHPStan yapılandırmasında kaydedin.

Terminal window
composer require nextpdf/enterprise:^3
rules:
- NextPDF\Enterprise\PHPStan\EditionBoundaryRule
SimgeParametrelerVarsayılan davranışDöndürürŞununla fırlatır veya başarısız olurNotlar
EditionBoundaryRuleYok (yapıcı argümanı yok)use deyimlerine abone, durumsuz PHPStan kuralıHiçbir zaman fırlatmazfinal; Use_ üzerinde PHPStan\Rules\Rule uygular
EditionBoundaryRule::getNodeType()YokKuralın abone olduğu AST düğüm türünü bildirirstring (Use_::class)Hiçbir zaman fırlatmazStandart PHPStan Rule sözleşme yöntemi
EditionBoundaryRule::processNode()Node $node, Scope $scopeHer içe aktarılan simgeyi, çözümlenen ad alanı için yasaklanan öneklere göre denetlerlist<IdentifierRuleError> (uyumluyken boş)Hiçbir zaman fırlatmaz; ihlaller kural hatası olarak yüzeye çıkarHata tanımlayıcısı nextpdf.editionBoundaryViolation
final class EditionBoundaryRule implements Rule
{
public function getNodeType(): string;
public function processNode(Node $node, Scope $scope): array;
}

EditionBoundaryRule, Use_ düğüm türü üzerinde standart PHPStan Rule sözleşmesini uygular. Her use deyimi için, çözümlenen dosyanın ad alanını içe aktarılan her simgenin ad alanı önekiyle karşılaştırır ve tek yönlü bir bağımlılık sırasını zorlar.

Çözümlenen ad alanıSürüm etiketiYasak içe aktarım önekleri
Pro ve Enterprise hariç NextPDF\* alt ad alanlarıCoreNextPDF\Pro\, NextPDF\Enterprise\
NextPDF\Pro ve NextPDF\Pro\*ProNextPDF\Enterprise\
NextPDF\Enterprise ve NextPDF\Enterprise\*EnterpriseYok (en üst katman)
NextPDF\ dışındaki herhangi bir ad alanıYok (kısıtlamasız)

Bir içe aktarım sınırı geçtiğinde, kural, nextpdf.editionBoundaryViolation tanımlayıcısı altında, suçlu use deyimi satırına bağlanan bir hata raporlar. İleti; içe aktarılan simgeyi, içe aktaran ad alanını, yasak öneki ve insan tarafından okunabilir sürüm etiketlerini adlandırır. Her içe aktarılan simge en fazla bir hata üretir: önek eşleştirme, eşleşen ilk yasak önekte durur.

Denetim statiktir ve tavsiye niteliğindedir. İçe aktarım deyimlerindeki sınır ihlallerini raporlar. Çözümlenen programın aksi takdirde doğru olduğunu kanıtlamaz.

  • NextPDF\ dışındaki ad alanları ve ad alanı olmayan dosyalar hiçbir hata üretmez; kural boş bir liste döndürür.
  • Tam kök ad alanı NextPDF içinde (alt ad alanı bölütü olmadan) bildirilen kod kısıtlanmaz; sınır algılama NextPDF\ alt ad alanlarını eşler.
  • Enterprise dosyaları, Pro veya Core simgeleri içe aktardığı için asla işaretlenmez (tasarım gereği en üst katman).
  • Önek eşleştirme ayırıcıya duyarlıdır. NextPDF\Professional gibi bir ad alanı Pro değil Core olarak sınıflandırılır ve altındaki içe aktarımlar NextPDF\Pro\ önekine karşı asla yanlış pozitif vermez.
  • NextPDF\Pro veya NextPDF\Enterprise sözcük değeri adlarını başka bir bölüt olmadan içe aktarmak işaretlenmez; yalnızca bu öneklerin altındaki simgeler eşleşir.
  • Kural, içe aktarım türüne göre filtre uygulamaz: yasak bir önek altındaki class, function ve const içe aktarımlarının tümü raporlanır.
  • Bir use deyimi olmadan yazılmış satır içi tam nitelikli başvurular kapsam dışıdır. Sınırın zorlanması için içe aktarımları tercih edin.
  • Grup use bildirimleri, ayrı GroupUse düğüm türü olarak ayrıştırılır ve kuralın Use_ aboneliğinin dışında kalır; simge başına düz içe aktarımlar sınırı denetlenmiş tutar.
  • processNode() hiçbir zaman fırlatmaz; tüm sonuçlar PHPStan kural hatası veya boş bir sonuç olarak yüzeye çıkar.
  • Bir çalışma zamanı bileşeni değildir. Hiçbir kriptografik işlem yapmaz ve FIPS modu uygulanabilir değildir.

Hiçbir standart uygunluğu iddia edilmez. Bu, aşağı akış derlemelerinde dahili bir mimari kısıtlamayı (sürüm katmanlaması) zorlayan bir geliştirici aracı kuralıdır. Formal bir standart değil, üçüncü taraf bir araç API’si olan PHPStan kural uzantısı sözleşmesini uygular. Kural, çözümlenen kod hakkında hiçbir uyumluluk, sertifikasyon veya doğruluk garantisi vermez; yalnızca sürüm sınırı içe aktarım ihlallerini raporlar ve tavsiye niteliğindedir.

  • Kural, çözümleme sırasında PHPStan içinde yürütülür, yalnızca kaynak yapısını okur ve oluşturulan PDF’ler ya da dağıtılan herhangi bir hizmet üzerinde etkisi yoktur.
  • Kuralı kaydetmek ve PHPStan düzeyini seçmek tümleştiricinin sorumluluğunda kalır.
  • Sınıf final ve durumsuzdur, bu nedenle PHPStan’ın paralel çözümleme işçileri altında güvenlidir.
  • Çözümleme çıktısı belirli bir kaynak ağacı için belirlenimcidir: aynı girdiler aynı hata listesini verir.
  • nextpdf/enterprise 2.1.0 sürümünden beri kullanılabilir; yukarıdaki sözleşme 3.1.0 sürümünü yansıtır.

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