Satu NxDom, Banyak Aplikasi
Extension dimuat di level PHP, bukan di dalam www/. Website A, B, dan C di server yang sama langsung memakai runtime yang sama — satu kali pasang, tanpa duplikasi.
nxdom-php v0.0.3 · PHP native extension · MIT
NxDom adalah PHP native extension global: dipasang sekali di server,
semua aplikasi langsung punya router, database, dan auth. Aplikasi tidak membawa
vendor/, tidak menyalin runtime, dan production tidak butuh Node.js.
Runtime backend sebagai extension native — bukan library yang disalin ke setiap aplikasi.
Extension dimuat di level PHP, bukan di dalam www/. Website A, B, dan C di server yang sama langsung memakai runtime yang sama — satu kali pasang, tanpa duplikasi.
Path seperti /api/users ditangani NxDom lewat front controller generik + rewrite generik (sekali per server). Aplikasi tidak punya Router.php — routing ada di runtime.
Query builder + PDO/MySQL dengan prepared statement. SQL mentah dari client ditolak; parameter hanya boleh jadi nilai, bukan nama tabel/kolom — penjagaan eksplisit terhadap SQL injection.
Register, login, session, role, dan API token dijalankan extension. nxdom.policy.json menegakkan fillable, whitelist kolom, dan batas limit — di server, bukan di client.
Aplikasi mendeklarasikan route dan izin lewat nxdom.config.json, nxdom.manifest.json, dan nxdom.policy.json — ada JSON Schema publik dan validator untuk ketiganya.
config.w32 (MSVC/nmake) dan config.m4 (phpize/autotools) — extension dibangun dan diuji di Windows (PHP 8.1 ZTS) maupun Linux (PHP 8.3, aaPanel). CI merilis CLI + SDK otomatis saat tag.
PHP tetap engine-nya, Apache/Nginx tetap web server-nya — NxDom menyediakan application API di atasnya.
Ekstensi native C (Zend Engine API) dimuat lewat extension=nxdom. Hook RINIT/RSHUTDOWN dipakai untuk mengenali aplikasi lewat nxdom.config.json di document root.
Native extension tidak bisa dipanggil web server tanpa file fisik, jadi ada satu nxdom/index.php generik + aturan rewrite yang di-Include identik di tiap vhost — tetap satu berkas untuk semua aplikasi.
Konfigurasi, policy, dan data tetap terpisah tiap app. File .json konfigurasi diblokir dari akses statis; path traversal dan route halaman divalidasi ketat.
vendor/nxdom/ maupun nxdom/ di aplikasi Anda. Tidak ada
Runtime.php, Router.php, atau Database.php
yang perlu ditulis developer — semuanya ada di extension.
nxdom-php untuk membuat & mengelola aplikasi; @nxdom/client untuk memanggil API dari browser.
# CLI - nxdom-php.exe (Node SEA, tanpa Node terpasang) atau npm link nxdom-php create myapp # scaffold aplikasi baru nxdom-php dev myapp # server pengembangan nxdom-php build myapp # build untuk produksi nxdom-php config # kelola konfigurasi nxdom-php install # pasang extension ke PHP nxdom-php install-host # pasang di level host/server # SDK browser - @nxdom/client import nxdom, { NxdomApiError } from '@nxdom/client'; nxdom.db('users').where('active', true).get(); nxdom.db('users').find(1); nxdom.db('users').create({ name: 'Ada' }); nxdom.auth.login({ email, password }); const me = await nxdom.auth.me();
/api/{resource} untuk
CRUD dan /api/auth/* untuk auth; endpoint model khusus lewat
/api/outside dengan resep query yang dideklarasikan di policy —
tidak ada eksekusi kode arbitrer dari client.
Unduh artefak siap pakai dari Release v0.0.3, atau build extension dari source.
Semua artefak tersedia di Releases v0.0.3. Versi PHP lain (atau LSPHP) perlu build dari nxdom/src/ — lihat install.md.
# butuh toolset v142 + PHP 8.1.31 source (lihat install.md) call vcvarsall.bat x64 -vcvars_ver=14.29 set PATH=C:\phpsdk\bin;%PATH% C:\phpsdk\bin\phpsdk_buildtree.bat phpmaster configure --disable-all --enable-cli --enable-nxdom=shared nmake # hasil: php_nxdom.dll
cd nxdom/src phpize ./configure --enable-nxdom make # hasil: nxdom.so sudo make install # aktifkan di php.ini: extension=nxdom
Setelah extension terpasang, ikuti runbook Apache (nxdom-rewrite.conf + Include di tiap vhost) atau panduan nginx pada Apache.md. Aplikasi yang tidak punya nxdom.config.json sama sekali tidak terpengaruh oleh extension ini.