Skip to content

๐Ÿ—๏ธ 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:

FileFungsi
content.fst.phpTampilan halaman (GET). Menggunakan syntax Blade.
action.phpLogika mutasi data (POST/PUT/PATCH/DELETE).
client.jsScript frontend SPA. Otomatis dibungkus IIFE.
_guard.phpMiddleware 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/users

Dynamic 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, DELETE

Pewarisan Layout & Guard (Top-Down & Bottom-Up) โ€‹

Kedua file ini bersifat kumulatif, namun dengan arah eksekusi yang berbeda:

  • _guard.php dieksekusi 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.php dirangkai 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).

Dibuat dengan โค๏ธ untuk ekosistem PHP yang lebih sederhana.