Fast Route Kütüphanesi
Geçtiğimiz aylarda Symfony/Routing İle Rotalarınızı Yönetin başlıklı bir yazı yayınlamıştım. O yazıda Symfony/Routing kütüphanesi ile PHP projelerinizde nasıl rotalama işlemi gerçekleştirebileceğinizden bahsetmiştim. Ancak bu yazıda, bir başka rotalama kütüphanesine değineceğim; Fast Route
Symfony/Routing kesinlikle harika bir kütüphane. Ancak gerçekleştirilen bir benchmark testi‘ne denk gelmem Fast Route kütüphanesi ile tanışmamı sağladı. Benchmark testine göre en hızlı rotalama kütüphanesi Fast Route. Bunun arkasında yatan neden için Fast Route kütüphanesi yaratıcısı Nikita Popov, kütüphaneyi “Regex Temelinde Çalışan Bir Kütüphane” olarak tanımlıyor. Bu konuyla ilgili oldukça detaylı olarak bir blog yazısı hazırlanmış. İlgili blog yazısına buradan ulaşabilirsiniz; Fast request routing using regular expressions
Kullanım
Kütüphane Composer ile hızlı bir şekilde kurulabiliyor (Packagist) ve kullanımı da oldukça basit;
require '/path/to/FastRoute/src/bootstrap.php';
$dispatcher = FastRoute\simpleDispatcher(function(FastRoute\RouteCollector $r) {
$r->addRoute('GET', '/user/{name}/{id:[0-9]+}', 'handler0');
$r->addRoute('GET', '/user/{id:[0-9]+}', 'handler1');
$r->addRoute('GET', '/user/{name}', 'handler2');
});
$routeInfo = $dispatcher->dispatch($httpMethod, $uri);
switch ($routeInfo[0]) {
case FastRoute\Dispatcher::NOT_FOUND:
// ... 404 Not Found
break;
case FastRoute\Dispatcher::METHOD_NOT_ALLOWED:
$allowedMethods = $routeInfo[1];
// ... 405 Method Not Allowed
break;
case FastRoute\Dispatcher::FOUND:
$handler = $routeInfo[1];
$vars = $routeInfo[2];
// ... call $handler with $vars
break;
}
Eğer basit ama hızlı bir rota yapısı oluşturmak isterseniz bu kütüphane tam size göre. Repository üzerine gönderilen commitleri incelediğimizde ise yazıyı yazdığım anda hala aktif bir kütüphane olduğunu söyleyebiliriz.