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?