Obullo / Stack (Psr15 Middleware)

Build Status Software License Total Downloads

Obullo http katmanı Node.Js Express 4 middleware kütüphanesinin php diline uyarlanmış bir versiyonudur.

Http katmanları http çözümlemesinden önce $request yada response nesnelerini etkilemek için kullanılırlar. Her bir katman uygulamayı sarar ve merkeze doğru ilerledikçe uygulamaya ulaşılır.Böylece uygulamanın çalışmaya başlamasından önceki ve sonraki aşamalar kontrol altına alınmış olur.

Express 4 middleware

router.use(function(req, res, next) {
    if (!req.route)
        return next (new Error('404'));  
    next();
});

Obullo Psr15 middleware

class Router implements MiddlewareInterface
{
    public function process(Request $request, RequestHandler $handler) : ResponseInterface
    {
        $match = false;
        if (! $match) {
            return $handler->process(new Error('404'));
        }
        return $handler->handle($request);
    }
}

Bu yaklaşım bir middleware içerisinden başka bir middleware çağırmaya olanak sağlar.

Yükleme

$ composer require obullo/stack

Minumum gereksinim

Bu versiyon php dilinin aşağıdaki sürümlerini destekler.

Test etme

$ vendor/bin/phpunit

Başlangıç

Aşağıda listelen middleware dosyalarını projenizin App\Middleware dosyası içerisine yerleştirin. Sonraki adımda aşağıdaki gibi çözümlemeyi gerçekleştirin.

require '../vendor/autoload.php';

use App\Middleware\{
    Error,
    Router,
    NotAllowed,
    ParsedBody,
    Dummy
};
use Obullo\Stack\Builder as Stack;

$request = Zend\Diactoros\ServerRequestFactory::fromGlobals();

$stack = new Stack;
$stack = $stack->withMiddleware(new Error)
    ->withMiddleware(new Router);

$response = $stack->process($request);

echo $response->getBody();

Dizi Yöntemi

require '../vendor/autoload.php';

use App\Middleware\{
    Error,
    Router,
    NotAllowed,
    ParsedBody,
    Dummy
};
use Obullo\Stack\Builder as Stack;

$request = Zend\Diactoros\ServerRequestFactory::fromGlobals();

$queue = [
    new Error,
    new Dummy,
    new Router
];
$stack = new Stack;
foreach ($queue as $value) {
    $stack = $stack->withMiddleware($value);
}
$response = $stack->process($request);

echo $response->getBody();

StackHandler Http\Stack\StackInterface arayüzünü kullanır.

Katmanlar

Error middleware

Bu katman varsayılan olarak uygulamada tanımlıdır. Php7 istisnai hatalarını yakalayarak uygulama hatalarının tek bir yerden yönetilmesini sağlar.

Aynı zamanda Router katmanını vasıtası ile error yönetimini üstlenebilir.

Uygulamanızın Json,Html, Xml gibi yanıt türleri ile hata çıktılaması için özelleştirilebilir.

NotAllowed middleware

NotAllowed katmanı uygulamaya gelen http istek türlerini kısıtlamanızı sağlar.

Eğer uygulamanıza http PUT türünde bir istek gelirse NotAllowed katmanı içerisindeki response nesnesi, uygulama çalıştırılmadan aşağıdaki gibi bir hata ile sonlanır.

Only Http GET, POST Methods Allowed

ParsedBody middleware

Web servisinize json,xml gibi medya türlerinde gelen verileri http raw biçimine dönüştürür.

Router middleware

Uygulumanızın route işlevlerini yöneten katmandır.