TURBOFRAME Docs

Selamat Datang di TurboFrame

TurboFrame adalah framework PHP super ringan dan super cepat yang dirancang khusus untuk mahasiswa, pelajar, dan developer profesional. Dengan filosofi "Zero Complexity", kami memastikan setiap baris kode mudah dipahami tanpa mengorbankan performa.

🚀 Mengapa TurboFrame?

  • 3x lebih cepat dalam benchmark standar
  • Sintaks yang sangat mudah dipelajari (cocok untuk pemula atau pro)
  • Built-in PWA support (website jadi aplikasi mobile)
  • Nitrous Mode untuk performa produksi maksimal

Welcome to TurboFrame

TurboFrame is a super lightweight and blazing fast PHP framework designed specifically for students, learners, and professional developers. With our "Zero Complexity" philosophy, we ensure every line of code is easy to understand without sacrificing performance.

🚀 Why TurboFrame?

  • 3x faster in standard benchmarks
  • Very easy to learn syntax (suitable for beginners or pros)
  • Built-in PWA support (turn websites into mobile apps)
  • Nitrous Mode for maximum production performance

Installation

Pastikan Anda sudah menginstall Composer dan PHP 8.1+. Buka terminal:

Make sure you have Composer and PHP 8.1+ installed. Open your terminal:

composer create-project turboframe/lambostarter my-project
cd my-project
php lambo serve

Buka browser di http://localhost:7000 - Done! 🎉

Open your browser at http://localhost:7000 - Done! 🎉

Configuration (.env)

File .env menyimpan semua konfigurasi penting aplikasi Anda:

The .env file stores all your application's important configurations:

APP_NAME=MyApp
APP_ENV=development
APP_DEBUG=true
APP_URL=http://localhost:7000

# Database
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=mydb
DB_USERNAME=root
DB_PASSWORD=

# Cache & Performance
CACHE_DRIVER=opcache
NITROUS_MODE=false
⚠️ Penting: ⚠️ Important: Jangan pernah commit file .env ke Git/GitHub! Tambahkan ke .gitignore. Never commit .env file to Git/GitHub! Add it to .gitignore.

Struktur Folder

Directory Structure

application/ Controllers, Models, Middleware AndaYour Controllers, Models, Middleware
config/ File konfigurasi (database, app)Configuration files (database, app)
public/ Assets publik (CSS, JS, gambar)Public assets (CSS, JS, images)
routes/ Definisi rute (site.php, api.php)Route definitions (site.php, api.php)
storage/ Cache, logs, compiled viewsCache, logs, compiled views
views/ Template .turbo.phpTemplate .turbo.php files
lambo CLI executableCLI executable

Routing

Routing menghubungkan URL dengan logic aplikasi Anda. Edit file routes/site.php:

Routing connects URLs to your application logic. Edit routes/site.php:

// Basic GET route
$router->get('/', function() {
    return view('welcome');
});

// Route with parameters
$router->get('/user/{id}', function($id) {
    return "User ID: " . $id;
});

// Named routes (recommended!)
$router->get('/dashboard', 'DashboardController@index')->name('dashboard');

// POST routes (for forms)
$router->post('/login', 'AuthController@login');

// Route groups with middleware
$router->group(['prefix' => 'admin', 'middleware' => 'auth'], function($router) {
    $router->get('/users', 'AdminController@users');
    $router->get('/settings', 'AdminController@settings');
});

Controllers

Controllers mengorganisir logic aplikasi Anda. Buat dengan CLI:

Controllers organize your application logic. Create with CLI:

php lambo make:controller UserController

Contoh controller lengkap:

Complete controller example:

namespace App\Controllers;

use TurboFrame\Http\Request;
use TurboFrame\Http\Response;
use App\Models\User;

class UserController
{
    public function index()
    {
        $users = User::all();
        return view('users.index', ['users' => $users]);
    }

    public function show(Request $request, $id)
    {
        $user = User::find($id);
        return view('users.show', ['user' => $user]);
    }

    public function store(Request $request)
    {
        $data = $request->post();
        User::create($data);
        return redirect('/users');
    }
}

Views & Templates

TurboFrame menggunakan template engine .turbo.php yang powerful namun mudah:

TurboFrame uses a powerful yet simple .turbo.php template engine:

1. Menampilkan Data (Echoing)

1. Echoing Data

{{-- Aman dari XSS (Recommended) --}}

Hello, {{ $name }}

{{-- Raw HTML (hati-hati!) --}}
{!! $html_content !!}

2. Kondisi (If/Else)

2. Conditionals (If/Else)

@if($user->isAdmin())
    
@elseif($user->isModerator())
    
@else
    

Welcome, User!

@endif

3. Perulangan (Loops)

3. Loops

@foreach($products as $product)
    

{{ $product->name }}

${{ $product->price }}

@endforeach @if(empty($products))

No products found.

@endif

4. Include Components (@calling)

4. Include Components (@calling)

{{-- Memanggil navbar --}}
@calling('components.navbar')

{{-- Dengan data --}}
@calling('components.card', ['title' => 'Hello', 'content' => 'World'])

Database (Query Builder)

Query Builder memudahkan interaksi dengan database tanpa menulis SQL manual:

Query Builder makes database interaction easy without writing manual SQL:

// SELECT - Get all records
$users = db()->table('users')->get();

// WHERE - Filter data
$admins = db()->table('users')
              ->where('role', 'admin')
              ->get();

// INSERT - Add new record
db()->table('users')->insert([
    'name' => 'John Doe',
    'email' => 'john@example.com',
    'password' => password_hash('secret', PASSWORD_DEFAULT)
]);

// UPDATE - Modify existing record
db()->table('users')
    ->where('id', 1)
    ->update(['name' => 'Jane Doe']);

// DELETE - Remove record
db()->table('users')->where('id', 5)->delete();

// Advanced queries
$results = db()->table('posts')
               ->where('status', 'published')
               ->orderBy('created_at', 'desc')
               ->limit(10)
               ->get();

Models (ORM)

Models menyediakan cara yang lebih elegan untuk berinteraksi dengan database:

Models provide a more elegant way to interact with your database:

namespace App\Models;

use TurboFrame\Database\Model;

class User extends Model
{
    protected string $table = 'users';
    
    protected array $fillable = ['name', 'email', 'password'];
    
    protected array $hidden = ['password'];
}

// Usage in controllers:
$users = User::all();
$user = User::find(1);
$activeUsers = User::where('status', 'active')->get();

Middleware

Middleware memfilter HTTP requests sebelum mencapai controller:

Middleware filters HTTP requests before reaching your controller:

// Create middleware
php lambo make:middleware AuthMiddleware

// Example middleware
namespace App\Middleware;

class AuthMiddleware
{
    public function handle($request, $next)
    {
        if (!isset($_SESSION['user_id'])) {
            return redirect('/login');
        }
        return $next($request);
    }
}

// Apply to routes
$router->group(['middleware' => 'auth'], function($router) {
    $router->get('/dashboard', 'DashboardController@index');
});

Helper Functions

TurboFrame menyediakan banyak helper functions untuk mempercepat development:

TurboFrame provides many helper functions to speed up development:

Function Kegunaan Purpose
view($name, $data)Render viewRender view
redirect($url)Redirect ke URLRedirect to URL
url($path)Generate URL lengkapGenerate full URL
route($name)URL dari named routeURL from named route
db()Akses databaseAccess database
dd($var)Dump & Die (debug)Dump & Die (debug)
session($key)Akses sessionAccess session
csrf_token()Generate CSRF tokenGenerate CSRF token
env($key)Baca .envRead .env

Validation

Validasi input user untuk keamanan aplikasi:

Validate user input for application security:

// In controller
public function store(Request $request)
{
    $data = $request->post();
    
    // Manual validation
    if (empty($data['email']) || !filter_var($data['email'], FILTER_VALIDATE_EMAIL)) {
        return redirect('/register')->with('error', 'Invalid email');
    }
    
    // Use helper
    $email = filter_var($data['email'], FILTER_SANITIZE_EMAIL);
    $name = htmlspecialchars($data['name'], ENT_QUOTES, 'UTF-8');
    
    // Save to database
    db()->table('users')->insert([
        'name' => $name,
        'email' => $email
    ]);
}

Sessions & Authentication

Mengelola session dan autentikasi user:

Managing sessions and user authentication:

// Set session
$_SESSION['user_id'] = $user->id;
$_SESSION['user_name'] = $user->name;

// Get session
$userId = session('user_id');

// Check if logged in
if (isset($_SESSION['user_id'])) {
    // User is logged in
}

// Logout
session_unset();
session_destroy();

// Flash messages
$_SESSION['success'] = 'Login successful!';
// In view: 

Lambo CLI Commands

CLI untuk mempercepat development:

CLI to speed up development:

php lambo serve

Jalankan development server

Start development server

php lambo make:controller NameController

Buat controller baru

Create new controller

php lambo make:model ModelName

Buat model baru

Create new model

php lambo cache:clear

Hapus semua cache

Clear all caches

php lambo route:list

Lihat semua routes

List all routes

🚀 Nitrous Mode

Fitur unggulan TurboFrame! Kompilasi seluruh aplikasi menjadi 1 file untuk performa maksimal di production.

TurboFrame's flagship feature! Compile your entire application into 1 file for maximum production performance.

php lambo nitrous compile

✅ Menggabungkan ribuan file PHP menjadi 1 file

✅ Mengurangi I/O disk hingga 90%

✅ Meningkatkan kecepatan response 3-5x lipat

✅ Otomatis mengaktifkan OPcache optimization

✅ Combines thousands of PHP files into 1 file

✅ Reduces disk I/O by up to 90%

✅ Increases response speed 3-5x

✅ Automatically enables OPcache optimization

Deployment to Production

Langkah-langkah deploy aplikasi TurboFrame ke server production:

Steps to deploy TurboFrame application to production server:

1. Persiapan ServerServer Preparation

# Install PHP 8.1+, Composer, dan web server (Apache/Nginx)
sudo apt update
sudo apt install php8.1 php8.1-fpm php8.1-mysql composer

2. Upload & InstallUpload & Install

git clone your-repo.git
cd your-project
composer install --no-dev --optimize-autoloader

3. Konfigurasi ProductionProduction Configuration

# Edit .env
APP_ENV=production
APP_DEBUG=false
NITROUS_MODE=true

# Compile with Nitrous
php lambo nitrous compile

4. Set PermissionsSet Permissions

chmod -R 755 storage
chmod -R 755 public
chown -R www-data:www-data storage