Enterprise edisi
PHPStan — Referensi Mendalam
Sekilas
Bagian berjudul “Sekilas”- Satu kelas publik:
EditionBoundaryRule, aturan PHPStan kustom atas pernyataanuse. - Menegakkan urutan dependensi edisi satu arah. Core tidak pernah mengimpor Pro atau Enterprise. Pro tidak pernah mengimpor Enterprise.
- Pelanggaran melaporkan pengenal
nextpdf.editionBoundaryViolationpada barisuseyang 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.
Ketersediaan & lisensi
Bagian berjudul “Ketersediaan & lisensi”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.
Permukaan API publik
Bagian berjudul “Permukaan API publik”Instal paketnya, lalu daftarkan aturannya dalam konfigurasi PHPStan.
composer require nextpdf/enterprise:^3rules: - NextPDF\Enterprise\PHPStan\EditionBoundaryRule| Simbol | Parameter | Perilaku bawaan | Mengembalikan | Melempar atau gagal dengan | Catatan |
|---|---|---|---|---|---|
EditionBoundaryRule | Tidak ada (tanpa argumen konstruktor) | Aturan PHPStan tanpa state yang berlangganan pernyataan use | — | Tidak pernah melempar | final; mengimplementasikan PHPStan\Rules\Rule atas Use_ |
EditionBoundaryRule::getNodeType() | Tidak ada | Mendeklarasikan tipe node AST yang dilangganani aturan | string (Use_::class) | Tidak pernah melempar | Metode kontrak Rule PHPStan standar |
EditionBoundaryRule::processNode() | Node $node, Scope $scope | Memeriksa setiap simbol yang diimpor terhadap prefiks yang dilarang bagi namespace yang dianalisis | list<IdentifierRuleError> (kosong bila patuh) | Tidak pernah melempar; pelanggaran muncul sebagai error aturan | Pengenal error nextpdf.editionBoundaryViolation |
final class EditionBoundaryRule implements Rule{ public function getNodeType(): string;
public function processNode(Node $node, Scope $scope): array;}Kontrak perilaku
Bagian berjudul “Kontrak perilaku”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 dianalisis | Label edisi | Prefiks impor yang dilarang |
|---|---|---|
Sub-namespace NextPDF\*, kecuali Pro dan Enterprise | Core | NextPDF\Pro\, NextPDF\Enterprise\ |
NextPDF\Pro dan NextPDF\Pro\* | Pro | NextPDF\Enterprise\ |
NextPDF\Enterprise dan NextPDF\Enterprise\* | Enterprise | Tidak 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.
Kasus tepi & mode kegagalan
Bagian berjudul “Kasus tepi & mode kegagalan”- 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-namespaceNextPDF\. - Berkas Enterprise tidak pernah ditandai karena mengimpor simbol Pro atau Core (tingkat teratas, sesuai desain).
- Pencocokan prefiks sadar-separator. Namespace seperti
NextPDF\Professionaldiklasifikasikan sebagai Core, bukan Pro, dan impor di bawahnya tidak pernah false-positive terhadap prefiksNextPDF\Pro\. - Mengimpor nama literal
NextPDF\ProatauNextPDF\Enterprisetanpa segmen lebih lanjut tidak ditandai; hanya simbol di bawah prefiks tersebut yang cocok. - Aturan tidak memfilter berdasarkan jenis impor: impor kelas,
function, danconstdi bawah prefiks yang dilarang semuanya dilaporkan. - Referensi fully-qualified inline yang ditulis tanpa pernyataan
useberada di luar cakupan. Utamakan impor agar batas ditegakkan. - Deklarasi
usegrup diurai sebagai tipe nodeGroupUseyang berbeda dan berada di luar langgananUse_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.
Konformansi
Bagian berjudul “Konformansi”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.
Catatan pengembangan
Bagian berjudul “Catatan pengembangan”- 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
finaldan 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/enterprise2.1.0; kontrak di atas mencerminkan 3.1.0.
Batas publikasi
Bagian berjudul “Batas publikasi”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.