Memahami tiga komponen inti NativePHP: embedded PHP runtime (persistent mode, eksekusi long-lived), native shell (Swift untuk iOS, Kotlin untuk Android), dan bridge komunikasi PHP ke fitur perangkat — semuanya berjalan tanpa server eksternal dan dirancang offline-first.

Setelah di episode 1 kita memahami sejarah NativePHP — dari Electron desktop, evolusi ke mobile, hingga v4 SuperNative — pada episode ini kita masuk lebih dalam ke bagaimana NativePHP bekerja di dalam perangkat. Memahami arsitektur intern penting karena kalian akan berinteraksi langsung dengan komponen-komponen ini: embedded PHP runtime yang menjalankan artisan, native shell yang mengelola lifecycle aplikasi, dan bridge yang menghubungkan PHP ke kamera, biometrik, GPS, dan fitur native lainnya.
Arsitektur NativePHP terdiri dari tiga lapisan yang berjalan bersama di dalam bundle aplikasi:
PHP runtime di-embed langsung di dalam aplikasi — bukan sebagai dependency sistem operasi, tapi sebagai binary PHP yang dibundel. Ini berarti PHP berjalan persis sama di iOS dan Android, menjalankan kode Laravel tanpa kompromi.
Karakter penting PHP runtime di NativePHP:
Setiap platform memiliki shell native yang mengelola lifecycle aplikasi:
Shell native bertanggung jawab atas:
Bridge adalah lapisan komunikasi antara PHP dan native shell. Bridge ini meng-expose API native ke PHP dalam bentuk yang familier bagi developer Laravel — facade dan service container:
<?php
use Native\Laravel\Facades\Biometric;
// Cek apakah device mendukung biometrik
if (Biometric::isSupported()) {
// Minta autentikasi biometrik
$result = Biometric::authenticate(
'Gunakan fingerprint untuk login'
);
}Di belakang layar, Biometric::authenticate() mengirim permintaan melalui bridge ke shell Kotlin (Android) atau Swift (iOS), yang kemudian menampilkan dialog fingerprint/face ID bawaan platform. Hasilnya dikembalikan ke PHP.
Saat kalian menjalankan php artisan native:run, ini yang terjadi:
NativePHP tidak membutuhkan server web. Seluruh aplikasi — PHP runtime, Laravel, database — berjalan di perangkat. Ini berarti:
Kode Laravel yang sama berjalan di iOS dan Android. Perbedaan hanya pada:
Setelah menjalankan php artisan native:run untuk pertama kali, lihat struktur proyek kalian:
ls -la resources/native/
# android/ — proyek Android (Gradle, Kotlin)
# ios/ — proyek iOS (Xcode, Swift)
cat config/nativephp.php
# Konfigurasi: app name, version, icon, permissionsFolder resources/native/ berisi proyek Android dan iOS yang siap dimodifikasi. Di sinilah shell native kalian hidup. Folder config/ berisi nativephp.php yang mengkonfigurasi identitas aplikasi, permissions, dan build settings.
Tip
Jangan langsung memodifikasi file di resources/native/ tanpa memahami dampaknya. File ini akan di-generate ulang oleh beberapa artisan command. Untuk customisasi yang persisten, gunakan config/nativephp.php.
Pada episode 2 ini, kalian telah memahami arsitektur intern NativePHP — tiga komponen inti yang saling bekerja sama.
Inti yang harus dibawa pulang:
Di episode 3 selanjutnya, kita akan membangun project pertama — membuat aplikasi "Hello Laravel" yang berjalan di simulator iOS dan emulator Android, memahami struktur folder, dan menjalankan artisan command pertama di perangkat. Sampai jumpa di episode 3!