๐๏ธ 2. Struktur Folder & Routing โ
Topologi Proyek โ
text
my-project/
โโโ .htaccess # Pengaman web server
โโโ fullstuck.json # Konfigurasi utama
โโโ fullstuck.php # Core engine (jangan diedit)
โโโ cache/ # Auto-generated (masukkan ke .gitignore)
โโโ components/ # Komponen UI reusable
โโโ globals/ # Helper PHP (auto-loaded)
โโโ app/ # Pusat routing (Path-Based Colocation)Cara Kerja Routing โ
Setiap folder di app/ otomatis menjadi endpoint URL. Letakkan salah satu dari 4 file standar (4-Pillars) untuk mengaktifkannya:
| File | Fungsi |
|---|---|
content.fst.php | Tampilan halaman (GET). Menggunakan syntax Blade. |
action.php | Logika mutasi data (POST/PUT/PATCH/DELETE). |
client.js | Script frontend SPA. Otomatis dibungkus IIFE. |
_guard.php | Middleware pelindung. Berjalan sebelum content/action. |
Contoh Pemetaan โ
text
app/
โโโ content.fst.php โ GET /
โโโ _layout.fst.php โ Layout global
โโโ _guard.php โ Guard global
โโโ blog/
โ โโโ content.fst.php โ GET /blog
โ โโโ client.js โ JS untuk /blog
โ โโโ [slug]/
โ โโโ content.fst.php โ GET /blog/artikel-saya
โ โโโ action.php โ POST /blog/artikel-saya
โโโ api/
โ โโโ products/
โ โโโ action.php โ GET|POST|PUT|DELETE /api/products
โโโ admin/
โโโ _guard.php โ Melindungi /admin/*
โโโ _layout.fst.php โ Layout khusus admin
โโโ users/
โโโ content.fst.php โ GET /admin/usersDynamic Routing (Parameter URL) โ
Buat folder dengan nama [parameter] (kurung siku). Nilainya otomatis tersedia di:
fst_input('slug')$_GET['slug']$_REQUEST['slug']
php
// Di app/blog/[slug]/content.fst.php
<?php $slug = fst_input('slug'); ?>
<h1>Artikel: {{ $slug }}</h1>Mode Headless API โ
Jika sebuah folder hanya berisi action.php (tanpa content.fst.php), maka action.php juga akan melayani request GET. Cocok untuk endpoint REST API murni.
text
app/api/products/action.php โ Menerima GET, POST, PUT, DELETEPewarisan Layout & Guard (Top-Down & Bottom-Up) โ
Kedua file ini bersifat kumulatif, namun dengan arah eksekusi yang berbeda:
_guard.phpdieksekusi Top-Down (Luar ke Dalam): Guard terluar (misal/app/_guard.php) akan dijalankan lebih dulu. Ini memungkinkan penghentian akses sedini mungkin sebelum mencapai rute di dalamnya._layout.fst.phpdirangkai Bottom-Up (Dalam ke Luar / Matryoshka): Konten dari anak akan di-render terlebih dahulu, dimasukkan ke layout anak, lalu keseluruhan hasilnya dibungkus oleh layout induk (bapak).