Yet Another PHP Micro Framework

Small · Simple · Elegant · Fast

Build Status Dependency Status Github Issues License
<?php
        
use Rakit\Framework\App;

require("vendor/autoload.php");

$app = new App('my-awesome-app');

$app->get('/', function() {
    return "Hello World!";
});

$app->run();

Rakit framework adalah PHP micro framework yang dapat membantu kamu membuat web app atau web service dengan mudah. Rakit framework pada dasarnya terinspirasi dari Laravel dan Slim framework. Untuk itu beberapa penggunaan akan terlihat mirip-mirip dengan framework tersebut.

Mendukung REST

$app->get('/get', function() {
    return 'You are access this using GET method';
});

$app->post('/post', function() {
    return 'You are access this using POST method';
});

$app->put('/put', function() {
    return 'You are access this using PUT method';
});

$app->patch('/patch', function() {
    return 'You are access this using PATCH method';
});

$app->delete('/delete', function() {
    return 'You are access this using DELETE method';
});

Menghasilkan JSON Lebih Mudah

Cukup return sebuah array untuk menghasilkan respon berupa json.

$app->get('/example.json', function() {
    return [
        'status' => 'ok',
        'message' => 'easy right?'
    ];
});

Kami Juga Mendukung Middleware Loh

Mendaftarkan middleware

$app->setMiddleware('auth', function($req, $res, $next) {
    if (!isset($_SESSION['user_id'])) {
        return $res->send('Unauthenticated Request', 401);          
    }

    return $next();
});

Lalu masukkan ke route untuk menggunakan middleware tersebut

$app->get('/admin', function() {
    return 'Hola Admin';
})->auth();

Automatic Injection

Kami memiliki container yang dapat melihat kebutuhan method pada route handler dan constructor kamu. Cukup beri hint pada argumen di route handler atau constructor kamu, container kami akan meng-inject object yang diperlukan secara otomatis!

...

use Rakit\Framework\Http\Request;

... 

$app->post('/login', function(Request $req) {
    $username = $req->get('username');
    $password = $req->get('password');
    ...
});

...

Elegant Upload File Syntax

Upload single file:

$app->post('/profile', function(Request $req) {
    $avatar = $req->file('avatar');
    if ($avatar) {
        $avatar->name = 'new-name';
        $avatar->move('my/upload/dir');
    }
});

Multiple upload file:

$app->post('/upload-images', function(Request $req) {
    $images = $req->multiFiles('images');
    foreach ($images as $i => $image) {
        $image->name = 'image-' . ($i + 1);
        $image->move('my/upload/dir');
    }
});

Dot Notation

Disini mengakses array konfigurasi dan request data lebih mudah dengan dot notation. Tidak perlu lagi isset-isset apalah itu.

// init App with some configs
$app = new App('my-awesome-app', [
    'product' => [
        'image_path' => '/uploads/products',
    ] 
]);

...

$app->post('/something', function(App $app, Request $req) {
    $productImagePath = $app->config['product.image_path'];
    $productId = $req->get('product.id'); // will retrieve $_POST['product']['id']
    ...
});

...

Menggunakan Controller Class Sebagai Route Handler

Bisa kok, begini caranya:

Pertama, siapkan controller class dulu pastinya:

<?php

use Rakit\Framework\Controller;

class MyController extends Controller
{

    public function doSomething()
    {
        // $this here refer to App instance
        $config = $this->config['any.config'];
        $file = $this->request->file('a_file');
    }

}

Setelah itu, kamu dapat mendaftarkan route dengan cara seperti ini:

$app->post('/something', 'MyController@doSomething');

Kecil tapi Ekstensibel

Install it when you need it

Begitulah slogan rakit framework pada awal pembuatannya. Maksudnya adalah cukup install apa yang kamu perlukan. Rakit framework sendiri dibuat berdasarkan beberapa keluhan terkait size Laravel yang dianggap berlebihan, sementara beberapa fiturnya seringkali tidak diperlukan.

Framework ini pada dasarnya hanyalah router, http request-response, dan konfigurator. Ukurannya sendiri hanya sekitar 200-300KB. Namun seperti namanya ‘rakit’, kamu dapat merakit framework ini sesuai keperluan kamu. Kamu dapat menambahkan kemampuan/layanan lain kedalam aplikasi dengan fitur ServiceProvider layaknya Laravel.

Berikut beberapa paket yang juga sedang kami kembangkan:

  • Rakit/Validation
    Library validasi ala laravel dengan sizenya yang 10 kali lebih kecil dari `illuminate/validation`.
  • Rakit/Blade
    Jika kamu ingin menggunakan blade pada rakit.
  • Rakit/Session
    Session manager dengan fitur Flash message. Mendukung driver PDO, Cookie, File, ataupun custom sesukamu.
  • Emsifa/Block
    PHP native template system (bukan engine) yang terinspirasi dari Blade. Hanya saja versi nativenya, jadi tidak butuh proses kompilasi dan caching, jadi performa lebih cepat.
  • Dan akan hadir lebih banyak lagi. Apakah kamu salah satu kreatornya?

Tertarik?

INSTALL DOKUMENTASI