siriusphp/middleware

轻量级中间件实现。1个类,

1.1.0 2016-06-21 11:33 UTC

This package is auto-updated.

Last update: 2024-08-24 04:06:09 UTC


README

Source Code Latest Version Software License Build Status Coverage Status Quality Score

常规中间件

$middlewares = array();

$middlewares[] = function(RequestInterface $request, ResponseInterface $response, callable $next = null) {
    // do your thing
    return $response;
};

$middlewares[] = function(RequestInterface $request, ResponseInterface $response, callable $next = null) {
    // do your thing
    return $response;
};

$runner = Sirius\Middleware\Runner::factory($middlewares);

$response = $runner(Zend\Diactoros\ServerRequestFactory::fromGlobals(), new Zend\Diactoros\Response);

中间件运行器是不可变的,因此添加新中间件会返回一个新的运行器。如果您想手动创建运行器

// this is WRONG!!!!!!!!!
$runner = new Sirius\Middleware\Runner;
$runner->add(function(RequestInterface $request, ResponseInterface $response, callable $next = null) {
    // do your thing
    return $response;
});
$runner->add(function(RequestInterface $request, ResponseInterface $response, callable $next = null) {
    // do your thing
    return $response;
});


// this is CORRECT
$runner =  (new Sirius\Middleware\Runner)
            ->add(function(RequestInterface $request, ResponseInterface $response, callable $next = null) {
              // do your thing
              return $response;
            })
            ->add(function(RequestInterface $request, ResponseInterface $response, callable $next = null) {
              // do your thing
              return $response;
            });

框架中间件

灵感来源于这篇文章 http://blog.ircmaxell.com/2016/05/all-about-middleware.html

$middlewares = array();

// first middleware in the stack must return an response
$middlewares[] = function(RequestInterface $request, callable $next = null) {
    return new Zend\Diactoros\Response;
};

$middlewares[] = function(RequestInterface $request, callable $next = null) {
    // do your thing
    return $response;
};

$middlewares[] = function(RequestInterface $request, callable $next = null) {
    // do your thing
    return $response;
};

$runner = Sirius\Middleware\FrameRunner::factory($middlewares);

$response = $runner(Zend\Diactoros\ServerRequestFactory::fromGlobals());