Enterprise sürüm
PHPStan — Derinlemesine başvuru
Bir bakışta
“Bir bakışta” başlıklı bölüm- Tek bir genel sınıf:
usedeyimleri üzerinde çalışan özel bir PHPStan kuralı olanEditionBoundaryRule. - 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
usesatırındanextpdf.editionBoundaryViolationtanı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/enterpriseiçinde gelir. Kayıt, standart PHPStan yapılandırmasını kullanır.
Kullanılabilirlik ve lisanslama
“Kullanılabilirlik ve lisanslama” başlıklı bölümBu 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.
Genel API yüzeyi
“Genel API yüzeyi” başlıklı bölümPaketi kurun, ardından kuralı PHPStan yapılandırmasında kaydedin.
composer require nextpdf/enterprise:^3rules: - NextPDF\Enterprise\PHPStan\EditionBoundaryRule| Simge | Parametreler | Varsayılan davranış | Döndürür | Şununla fırlatır veya başarısız olur | Notlar |
|---|---|---|---|---|---|
EditionBoundaryRule | Yok (yapıcı argümanı yok) | use deyimlerine abone, durumsuz PHPStan kuralı | — | Hiçbir zaman fırlatmaz | final; Use_ üzerinde PHPStan\Rules\Rule uygular |
EditionBoundaryRule::getNodeType() | Yok | Kuralın abone olduğu AST düğüm türünü bildirir | string (Use_::class) | Hiçbir zaman fırlatmaz | Standart PHPStan Rule sözleşme yöntemi |
EditionBoundaryRule::processNode() | Node $node, Scope $scope | Her içe aktarılan simgeyi, çözümlenen ad alanı için yasaklanan öneklere göre denetler | list<IdentifierRuleError> (uyumluyken boş) | Hiçbir zaman fırlatmaz; ihlaller kural hatası olarak yüzeye çıkar | Hata tanımlayıcısı nextpdf.editionBoundaryViolation |
final class EditionBoundaryRule implements Rule{ public function getNodeType(): string;
public function processNode(Node $node, Scope $scope): array;}Davranış sözleşmesi
“Davranış sözleşmesi” başlıklı bölümEditionBoundaryRule, 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 etiketi | Yasak içe aktarım önekleri |
|---|---|---|
Pro ve Enterprise hariç NextPDF\* alt ad alanları | Core | NextPDF\Pro\, NextPDF\Enterprise\ |
NextPDF\Pro ve NextPDF\Pro\* | Pro | NextPDF\Enterprise\ |
NextPDF\Enterprise ve NextPDF\Enterprise\* | Enterprise | Yok (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.
Uç durumlar ve başarısızlık modları
“Uç durumlar ve başarısızlık modları” başlıklı bölümNextPDF\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ı
NextPDFiçinde (alt ad alanı bölütü olmadan) bildirilen kod kısıtlanmaz; sınır algılamaNextPDF\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\Professionalgibi bir ad alanı Pro değil Core olarak sınıflandırılır ve altındaki içe aktarımlarNextPDF\Pro\önekine karşı asla yanlış pozitif vermez. NextPDF\ProveyaNextPDF\Enterprisesö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,
functionveconstiçe aktarımlarının tümü raporlanır. - Bir
usedeyimi 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
usebildirimleri, ayrıGroupUsedüğüm türü olarak ayrıştırılır ve kuralınUse_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.
Uygunluk
“Uygunluk” başlıklı bölümHiç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.
Geliştirme notları
“Geliştirme notları” başlıklı bölüm- 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
finalve 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/enterprise2.1.0 sürümünden beri kullanılabilir; yukarıdaki sözleşme 3.1.0 sürümünü yansıtır.
Yayımlama sınırı
“Yayımlama sınırı” başlıklı bölümBu 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.