WARNING: Under development!
Luthier Framework is a versatile PHP micro-framework for build APIs and small websites quickly. When we say "micro" we mean REALLY micro: in fact, only Composer and a single .php file is required to start.
- Based on the Symfony components
- Easy to learn and extend
- Powerful and flexible router with middleware support
- CSRF protection
- JSON and XML response helpers
- Validator with translated error messages
- Dependency Injection container
- Command Line Interface command creation
- Built-in plain PHP template engine with Twig and Blade integration
- PHP >= 7.1.8
- Composer
Get Luthier Framework with composer:
composer require luthier/framework
Basic example:
<?php
# your_app/index.php
require 'vendor/autoload.php';
$app = new Luthier\Framework();
$app->get('/', function(){
$this->response->write("Hello world!");
});
$app->group('api', function(){
$this->get('/', function(){
json_response(['message' => 'Welcome to Luthier Framework!']);
});
$this->get('about', function(){
json_response(['version' => Luthier\Framework::VERSION]);
});
});
$app->run();
Defining routes:
$app->get('foo/', function(){
// Default template engine (will search for /foo.php file)
view('foo');
});
$app->post('bar/', function(){
view('bar');
});
$app->match(['get','post'], 'baz/', function(){
view('baz');
});
Router parameters:
$app->get('hello/{name}', function($name){
$this->response->write("Hello $name!");
});
// Optional parameters
$app->get('about/{category?}', function($category = 'animals'){
$this->response->write("Category: category");
});
// Regex parameters
$app->get('website/{((en|es|fr)):lang}', function($lang){
$this->response->write($lang);
});
Route middleware:
// Global middleware:
$app->middleware(function($request, $response, $next){
$response->write('Global <br>');
$next($request, $response);
});
// Global middleware (but not assigned to any route yet)
$app->middleware('test', function($request, $response, $next){
$response->write('Before route<br>');
$next($request, $response);
$response->write('After route <br>');
});
$this->get('/', function(){
$this->response->write('Route <br>')
})->middleware('test'); // <- assign the 'test' middleware to this route
Coming soon!
- Luthier CI: Improved routing, middleware support, authentication tools and more for CodeIgniter 3 framework
- SimpleDocs: Dynamic documentation library for PHP which uses Markdown files
If you love our work, consider support us on Patreon