Enterprise edisi
PHPStan
Sekilas pandang
Bagian berjudul “Sekilas pandang”NextPDF Enterprise menyertakan aturan PHPStan kustom, EditionBoundaryRule, yang menandai impor use yang melintasi batas edisi Core → Pro → Enterprise. Ini adalah pemeriksaan statis yang dihadapkan ke pengembang yang melaporkan pelanggaran; ia menganalisis pernyataan impor dan tidak menjamin kebenaran kode Anda.
Ketersediaan & lisensi
Bagian berjudul “Ketersediaan & lisensi”Kapabilitas ini dikirimkan dalam NextPDF Enterprise (nextpdf/enterprise) dan aktif dengan envelope lisensi tier Enterprise. Ini adalah aturan PHPStan waktu-build yang didaftarkan melalui konfigurasi PHPStan Anda, sehingga ia berjalan selama analisis statis dan tidak memiliki jalur runtime; gerbang lisensi adalah batas paket nextpdf/enterprise, tanpa kode kapabilitas per-fitur tersendiri. Bandingkan edisi dan dapatkan lisensi.
Pemasangan
Bagian berjudul “Pemasangan”composer require nextpdf/enterprise:^3Daftarkan aturan dalam konfigurasi PHPStan Anda:
rules: - NextPDF\Enterprise\PHPStan\EditionBoundaryRuleTinjauan konseptual
Bagian berjudul “Tinjauan konseptual”Aturan ini memeriksa setiap pernyataan use dan membandingkan namespace pengimpor terhadap prefiks namespace simbol yang diimpor. Ia menegakkan urutan dependensi satu arah:
- Kode Core (
NextPDF\, tidak termasuk sub-namespace Pro dan Enterprise) tidak boleh mengimpor dariNextPDF\Pro\*atauNextPDF\Enterprise\*. - Kode Pro (
NextPDF\Pro\*) tidak boleh mengimpor dariNextPDF\Enterprise\*. - Kode Enterprise (
NextPDF\Enterprise\*) adalah tingkat teratas dan boleh mengimpor dari mana pun.
Ketika sebuah impor melintasi batas, aturan melaporkan error dengan pengidentifikasi nextpdf.editionBoundaryViolation dan pesan yang menyebutkan namespace pengimpor, prefiks terlarang, dan label edisi yang dapat dibaca manusia. Pemeriksaan bersifat murni statis: ia membaca graf impor pada waktu analisis.
Mengapa ia bekerja seperti ini
Bagian berjudul “Mengapa ia bekerja seperti ini”Aturan bernalar tentang pernyataan use pada waktu analisis, bukan pada waktu runtime, karena batas edisi adalah invarian arsitektural alih-alih keputusan runtime. Core, Pro, dan Enterprise dikirimkan sebagai paket terpisah, sehingga tier yang lebih rendah tidak boleh bergantung pada simbol yang tidak ada dalam pemasangan yang lebih kecil. Menangkap impor lintas-batas selama analisis statis akan menggagalkan build sebelum kesalahan dikirimkan. Alternatifnya lebih buruk: impor yang sama muncul kemudian sebagai error kelas-hilang fatal dalam penerapan Core-saja. Urutannya sengaja satu arah, Core → Pro → Enterprise, mencerminkan bagaimana paket open-core berlapis di atas satu sama lain. Enterprise tetap tanpa batasan karena ia adalah tingkat teratas dan boleh mereferensikan setiap edisi di bawahnya.
Latar belakang desain: Open core, tanpa lock-in.
Permukaan API
Bagian berjudul “Permukaan API”| Class | Responsibility |
|---|---|
EditionBoundaryRule | Aturan PHPStan atas pernyataan use; melaporkan pelanggaran batas-edisi. |
Aturan mengimplementasikan kontrak PHPStan Rule standar atas tipe node Use_ dan memancarkan error di bawah pengidentifikasi nextpdf.editionBoundaryViolation.
Contoh kode — Mulai cepat
Bagian berjudul “Contoh kode — Mulai cepat”# phpstan.neonincludes: - vendor/nextpdf/enterprise/phpstan.neon.distContoh kode — Produksi
Bagian berjudul “Contoh kode — Produksi”# phpstan.neonrules: - NextPDF\Enterprise\PHPStan\EditionBoundaryRule
parameters: level: 9 paths: - srcSebuah pelanggaran muncul dalam keluaran PHPStan sebagai, misalnya: impor Enterprise di dalam kode Core dilaporkan sebagai pelanggaran batas-edisi pada baris use yang melanggar, di bawah nextpdf.editionBoundaryViolation.
Kasus tepi & jebakan
Bagian berjudul “Kasus tepi & jebakan”- Aturan bernalar tentang namespace berkas yang dianalisis dan prefiks simbol yang diimpor. Kode dalam namespace non-
NextPDF\tidak dibatasi oleh aturan ini. - Namespace Enterprise tidak dibatasi secara desain; aturan tidak pernah menandai berkas Enterprise yang mengimpor Pro atau Core.
- Aturan menganalisis pernyataan
use. Referensi kelas yang sepenuhnya berkualifikasi yang ditulis inline tanpauseberada di luar cakupan aturan ini; utamakan impor sehingga batas ditegakkan. - Pemeriksaan bersifat statis dan advisory: ia melaporkan pelanggaran batas. Ia tidak membuktikan bahwa program Anda benar dalam hal lainnya.
Kinerja
Bagian berjudul “Kinerja”Aturan berjalan per pernyataan use selama analisis PHPStan dan melakukan perbandingan prefiks-string. Overhead-nya sebanding dengan jumlah pernyataan impor dan dapat diabaikan relatif terhadap keseluruhan waktu analisis.
Catatan keamanan
Bagian berjudul “Catatan keamanan”Ini adalah aturan analisis-statis. Ia dieksekusi pada waktu build di dalam PHPStan, hanya membaca struktur sumber, dan tidak memiliki efek runtime pada PDF yang dihasilkan.
Residensi data & mitigasi PII
Bagian berjudul “Residensi data & mitigasi PII”Aturan memproses kode sumber pada waktu analisis dan tidak menangani data dokumen atau pribadi.
Telemetri aman & penghapusan data log
Bagian berjudul “Telemetri aman & penghapusan data log”Keluaran aturan adalah diagnostik PHPStan. Ia memuat namespace dan nama simbol dari kode Anda sendiri; perlakukan log analisis dengan kehati-hatian yang sama seperti kode sumber Anda.
Konformitas
Bagian berjudul “Konformitas”Tidak ada kesesuaian standar yang diklaim. Ini adalah aturan perkakas pengembang yang menegakkan kendala arsitektural internal (pelapisan edisi) dalam build hilir.
Perilaku mode FIPS
Bagian berjudul “Perilaku mode FIPS”Tidak berlaku; aturan tidak melakukan operasi kriptografis dan tidak memiliki jalur runtime.
Model ancaman
Bagian berjudul “Model ancaman”Bukan komponen runtime. Tujuan aturan adalah menangkap kesalahan arsitektural — impor batas-edisi — sebelum dikirimkan, dengan menggagalkan tahap analisis-statis.
Kontrak perilaku
Bagian berjudul “Kontrak perilaku”- Aturan memeriksa setiap pernyataan
usedan menegakkan urutan dependensi satu arah: Core tidak boleh mengimpor Pro atau Enterprise; Pro tidak boleh mengimpor Enterprise; Enterprise boleh mengimpor apa pun. - Impor yang melintasi batas dilaporkan di bawah pengidentifikasi
nextpdf.editionBoundaryViolationdengan namespace pengimpor dan prefiks terlarang. - Kode dalam namespace non-
NextPDF\tidak dibatasi oleh aturan ini. - Referensi kelas inline yang sepenuhnya berkualifikasi tanpa
useberada di luar cakupan aturan ini; utamakan impor sehingga batas ditegakkan.
Batas publikasi
Bagian berjudul “Batas publikasi”Halaman ini hanya mendokumentasikan perilaku yang dapat diamati dari luar dan permukaan API publik yang didukung. Jalur namespace internal, kelas pembantu, tabel mekanisme, nama berkas runbook, dan prefiks tiket berada di luar cakupan.
Fallback Core
Bagian berjudul “Fallback Core”NextPDF Core tidak menyertakan aturan PHPStan batas-edisi. Konsumen Core-saja yang ingin pelapisan edisi ditegakkan dalam build-nya sendiri harus menulis atau memperoleh aturan setara sendiri.
Fallback Pro
Bagian berjudul “Fallback Pro”NextPDF Pro tidak menyertakan aturan PHPStan batas-edisi; aturan tersebut hanya bagian dari paket nextpdf/enterprise. Penerapan Pro-saja tidak memiliki komponen Enterprise untuk mendaftarkan aturan ini. Lihat Ringkasan Enterprise untuk permukaan Enterprise.
Catatan batas Enterprise
Bagian berjudul “Catatan batas Enterprise”Detail mekanisme internal tetap berada dalam dokumentasi internal repositori sumber dan berada di luar cakupan manual ini.
Batas penyebaran
Bagian berjudul “Batas penyebaran”Ini adalah aturan analisis-statis waktu-build. Ia dieksekusi di dalam PHPStan selama analisis, hanya membaca struktur sumber, dan tidak memiliki efek runtime pada PDF yang dihasilkan atau pada layanan apa pun yang diterapkan. Mendaftarkannya dan memilih level PHPStan adalah tanggung jawab integrator.
Batas kepatuhan hukum
Bagian berjudul “Batas kepatuhan hukum”Halaman ini mendeskripsikan aturan analisis-statis perkakas-pengembang. Ia tidak membuat jaminan kepatuhan, sertifikasi, atau kebenaran apa pun tentang kode Anda; ia hanya melaporkan pelanggaran impor batas-edisi dan bersifat advisory. Ia bukan nasihat hukum. Menilai apakah build Anda memenuhi kewajiban arsitektural atau kontraktual Anda sendiri adalah tanggung jawab Anda.