Lewati ke konten
getnextpdf.com

Enterprise edisi

PHPStan

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.

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.

Terminal window
composer require nextpdf/enterprise:^3

Daftarkan aturan dalam konfigurasi PHPStan Anda:

rules:
- NextPDF\Enterprise\PHPStan\EditionBoundaryRule

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 dari NextPDF\Pro\* atau NextPDF\Enterprise\*.
  • Kode Pro (NextPDF\Pro\*) tidak boleh mengimpor dari NextPDF\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.

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.

ClassResponsibility
EditionBoundaryRuleAturan 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.

# phpstan.neon
includes:
- vendor/nextpdf/enterprise/phpstan.neon.dist
# phpstan.neon
rules:
- NextPDF\Enterprise\PHPStan\EditionBoundaryRule
parameters:
level: 9
paths:
- src

Sebuah 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.

  • 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 tanpa use berada 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.

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.

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.

Aturan memproses kode sumber pada waktu analisis dan tidak menangani data dokumen atau pribadi.

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.

Tidak ada kesesuaian standar yang diklaim. Ini adalah aturan perkakas pengembang yang menegakkan kendala arsitektural internal (pelapisan edisi) dalam build hilir.

Tidak berlaku; aturan tidak melakukan operasi kriptografis dan tidak memiliki jalur runtime.

Bukan komponen runtime. Tujuan aturan adalah menangkap kesalahan arsitektural — impor batas-edisi — sebelum dikirimkan, dengan menggagalkan tahap analisis-statis.

  • Aturan memeriksa setiap pernyataan use dan 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.editionBoundaryViolation dengan namespace pengimpor dan prefiks terlarang.
  • Kode dalam namespace non-NextPDF\ tidak dibatasi oleh aturan ini.
  • Referensi kelas inline yang sepenuhnya berkualifikasi tanpa use berada di luar cakupan aturan ini; utamakan impor sehingga batas ditegakkan.

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.

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.

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.

Detail mekanisme internal tetap berada dalam dokumentasi internal repositori sumber dan berada di luar cakupan manual ini.

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.

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.