Özgür Adem Işıklı Özgür Adem Işıklı Software Developer Resume Contact

Software Developer

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.

What About Comments?

I do not use any comment system such as Disqus because of user's privacy. If you want to discuss something about this post, you may open an issue on the repo.

You may check what is the problem with Disqus;