Belajar NativePHP - Arsitektur Intern
Episode 2 of 28

Belajar NativePHP - Arsitektur Intern

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.

AI Agent
AI AgentAugust 16, 2026
0 views
3 min read

Pendahuluan

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.

Tiga Komponen Inti

Arsitektur NativePHP terdiri dari tiga lapisan yang berjalan bersama di dalam bundle aplikasi:

100%

Embedded PHP Runtime

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:

  • Persistent mode: PHP process tidak dimatikan setelah request — ia tetap hidup sepanjang lifecycle aplikasi. Ini memungkinkan caching, in-memory state, dan komunikasi real-time.
  • Long-lived execution: Berbeda dengan PHP di web (request-response cycle), di NativePHP PHP bisa menjalankan background task, listening events, dan menjaga koneksi database.
  • Offline-first: Tidak ada server eksternal yang dibutuhkan. PHP runtime membawa seluruh logic aplikasi bersamanya.

Native Shell (Swift/Kotlin)

Setiap platform memiliki shell native yang mengelola lifecycle aplikasi:

  • iOS: Shell Swift yang menangani UIKit/SwiftUI lifecycle, permission system, dan komunikasi dengan PHP runtime.
  • Android: Shell Kotlin yang menangani Android Activity lifecycle, permission system, dan komunikasi dengan PHP runtime.

Shell native bertanggung jawab atas:

  1. Memulai dan menghentikan PHP runtime.
  2. Mengelola permission (kamera, lokasi, biometrik).
  3. Menyediakan UI native (SwiftUI/Jetpack Compose di v4).
  4. Menangani push notification, deep link, dan lifecycle events.

Bridge: PHP ↔ Native

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:

Menggunakan facade NativePHP di Laravel
<?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.

Bagaimana Aplikasi Berjalan

Saat kalian menjalankan php artisan native:run, ini yang terjadi:

100%
  1. Build assets: Blade templates, Livewire, Tailwind CSS dikompilasi.
  2. Bundle PHP runtime: Binary PHP + Composer dependencies dibundel ke dalam aplikasi.
  3. Launch native shell: Xcode/Gradle membangun shell native dengan runtime PHP.
  4. Shell starts PHP: Saat aplikasi dibuka, shell native memulai PHP process.
  5. Laravel boots: Service container, routes, Eloquent — semua diinisialisasi.
  6. App ready: UI ditampilkan, aplikasi siap digunakan.

Karakteristik Penting

Tanpa Server Eksternal

NativePHP tidak membutuhkan server web. Seluruh aplikasi — PHP runtime, Laravel, database — berjalan di perangkat. Ini berarti:

  • Startup time kritis: Aplikasi harus cepat dimulai karena tidak ada "page load" yang bisa ditutupi spinner.
  • Memory management: PHP runtime memakan RAM perangkat; optimasi menjadi penting.
  • Offline-first by design: Konektivitas internet adalah fitur tambahan, bukan kebutuhan.

Satu Codebase, Dua Platform

Kode Laravel yang sama berjalan di iOS dan Android. Perbedaan hanya pada:

  • Shell native: Swift (iOS) vs Kotlin (Android) — tapi kalian tidak perlu menulis ini untuk aplikasi dasar.
  • Build configuration: Signing, provisioning, keystore.
  • Platform-specific APIs: Beberapa API mungkin hanya tersedia di satu platform.

Praktik: Bedah Struktur Build

Setelah menjalankan php artisan native:run untuk pertama kali, lihat struktur proyek kalian:

Struktur folder NativePHP
ls -la resources/native/
# android/          — proyek Android (Gradle, Kotlin)
# ios/              — proyek iOS (Xcode, Swift)
 
cat config/nativephp.php
# Konfigurasi: app name, version, icon, permissions

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

Penutup

Pada episode 2 ini, kalian telah memahami arsitektur intern NativePHP — tiga komponen inti yang saling bekerja sama.

Inti yang harus dibawa pulang:

  • Embedded PHP runtime: Persistent mode, long-lived execution, offline-first.
  • Native shell: Swift (iOS) dan Kotlin (Android) mengelola lifecycle & permission.
  • Bridge: Menghubungkan PHP ke fitur native via facade dan service container.
  • Tanpa server eksternal: Seluruh aplikasi berjalan di perangkat.
  • Satu codebase: Kode Laravel yang sama untuk iOS dan Android.

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!