Lewati ke konten
getnextpdf.com

Enterprise edisi

PHPStan — Referensi Mendalam

  • Satu kelas publik: EditionBoundaryRule, aturan PHPStan kustom atas pernyataan use.
  • Menegakkan urutan dependensi edisi satu arah. Core tidak pernah mengimpor Pro atau Enterprise. Pro tidak pernah mengimpor Enterprise.
  • Pelanggaran melaporkan pengenal nextpdf.editionBoundaryViolation pada baris use yang melanggar.
  • Hanya saat build. Aturan ini tidak memiliki jalur runtime dan tidak berdampak pada PDF yang dihasilkan.
  • Dikirim dalam nextpdf/enterprise. Registrasi menggunakan konfigurasi PHPStan standar.

Kemampuan ini dikirim dalam NextPDF Enterprise (nextpdf/enterprise) dan aktif dengan amplop lisensi tingkat Enterprise. Ini adalah aturan analisis statis saat build tanpa jalur runtime: batas paket nextpdf/enterprise yang menggerbanginya, dan aturan ini tidak membawa kode kemampuan per-fitur terpisah. Core dan Pro tidak mengirim padanannya. Bandingkan edisi dan dapatkan lisensi.

Instal paketnya, lalu daftarkan aturannya dalam konfigurasi PHPStan.

Terminal window
composer require nextpdf/enterprise:^3
rules:
- NextPDF\Enterprise\PHPStan\EditionBoundaryRule
SimbolParameterPerilaku bawaanMengembalikanMelempar atau gagal denganCatatan
EditionBoundaryRuleTidak ada (tanpa argumen konstruktor)Aturan PHPStan tanpa state yang berlangganan pernyataan useTidak pernah melemparfinal; mengimplementasikan PHPStan\Rules\Rule atas Use_
EditionBoundaryRule::getNodeType()Tidak adaMendeklarasikan tipe node AST yang dilangganani aturanstring (Use_::class)Tidak pernah melemparMetode kontrak Rule PHPStan standar
EditionBoundaryRule::processNode()Node $node, Scope $scopeMemeriksa setiap simbol yang diimpor terhadap prefiks yang dilarang bagi namespace yang dianalisislist<IdentifierRuleError> (kosong bila patuh)Tidak pernah melempar; pelanggaran muncul sebagai error aturanPengenal error nextpdf.editionBoundaryViolation
final class EditionBoundaryRule implements Rule
{
public function getNodeType(): string;
public function processNode(Node $node, Scope $scope): array;
}

EditionBoundaryRule mengimplementasikan kontrak Rule PHPStan standar atas tipe node Use_. Untuk setiap pernyataan use, aturan ini membandingkan namespace berkas yang dianalisis terhadap prefiks namespace setiap simbol yang diimpor dan menegakkan urutan dependensi satu arah.

Namespace yang dianalisisLabel edisiPrefiks impor yang dilarang
Sub-namespace NextPDF\*, kecuali Pro dan EnterpriseCoreNextPDF\Pro\, NextPDF\Enterprise\
NextPDF\Pro dan NextPDF\Pro\*ProNextPDF\Enterprise\
NextPDF\Enterprise dan NextPDF\Enterprise\*EnterpriseTidak ada (tingkat teratas)
Namespace apa pun di luar NextPDF\Tidak ada (tanpa batasan)

Ketika sebuah impor melintasi batas, aturan melaporkan error di bawah pengenal nextpdf.editionBoundaryViolation, ditambatkan pada baris pernyataan use yang melanggar. Pesan menyebutkan simbol yang diimpor, namespace pengimpor, prefiks yang dilarang, dan label edisi yang mudah dibaca manusia. Setiap simbol yang diimpor menghasilkan paling banyak satu error: pencocokan prefiks berhenti pada prefiks terlarang pertama yang cocok.

Pemeriksaan bersifat statis dan advisori. Ia melaporkan pelanggaran batas pada pernyataan impor. Ia tidak membuktikan bahwa program yang dianalisis benar untuk selebihnya.

  • Namespace di luar NextPDF\ dan berkas tanpa namespace tidak menghasilkan error; aturan mengembalikan daftar kosong.
  • Kode yang dideklarasikan di namespace root tepat NextPDF (tanpa segmen sub-namespace) tidak dibatasi; deteksi batas mencocokkan sub-namespace NextPDF\.
  • Berkas Enterprise tidak pernah ditandai karena mengimpor simbol Pro atau Core (tingkat teratas, sesuai desain).
  • Pencocokan prefiks sadar-separator. Namespace seperti NextPDF\Professional diklasifikasikan sebagai Core, bukan Pro, dan impor di bawahnya tidak pernah false-positive terhadap prefiks NextPDF\Pro\.
  • Mengimpor nama literal NextPDF\Pro atau NextPDF\Enterprise tanpa segmen lebih lanjut tidak ditandai; hanya simbol di bawah prefiks tersebut yang cocok.
  • Aturan tidak memfilter berdasarkan jenis impor: impor kelas, function, dan const di bawah prefiks yang dilarang semuanya dilaporkan.
  • Referensi fully-qualified inline yang ditulis tanpa pernyataan use berada di luar cakupan. Utamakan impor agar batas ditegakkan.
  • Deklarasi use grup diurai sebagai tipe node GroupUse yang berbeda dan berada di luar langganan Use_ aturan; impor biasa per-simbol menjaga batas tetap diperiksa.
  • processNode() tidak pernah melempar; semua hasil muncul sebagai error aturan PHPStan atau hasil kosong.
  • Bukan komponen runtime. Ia tidak melakukan operasi kriptografis, dan mode FIPS tidak berlaku.

Tidak ada klaim konformansi standar. Ini adalah aturan tooling pengembang yang menegakkan batasan arsitektural internal (pelapisan edisi) di build hilir. Ia mengimplementasikan kontrak ekstensi aturan PHPStan, yang merupakan API alat pihak ketiga, bukan standar formal. Aturan ini tidak membuat jaminan kepatuhan, sertifikasi, atau kebenaran atas kode yang dianalisis; ia hanya melaporkan pelanggaran impor batas edisi dan bersifat advisori.

  • Aturan dieksekusi di dalam PHPStan selama analisis, hanya membaca struktur sumber, dan tidak berdampak pada PDF yang dihasilkan atau layanan mana pun yang di-deploy.
  • Registrasi aturan dan pemilihan level PHPStan tetap menjadi tanggung jawab integrator.
  • Kelas ini final dan tanpa state, sehingga aman di bawah worker analisis paralel PHPStan.
  • Keluaran analisis bersifat deterministik untuk pohon sumber tertentu: input yang sama menghasilkan daftar error yang sama.
  • Tersedia sejak nextpdf/enterprise 2.1.0; kontrak di atas mencerminkan 3.1.0.

Halaman ini hanya mendokumentasikan perilaku yang dapat diamati secara eksternal dan permukaan API publik yang didukung. Jalur namespace internal, kelas pembantu, tabel mekanisme, nama berkas runbook, dan prefiks tiket berada di luar cakupan.