Skip to content

Instantly share code, notes, and snippets.

@asgrim
Last active June 4, 2020 20:21
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save asgrim/8b11e249177595b6cc535a0fd94ce19d to your computer and use it in GitHub Desktop.
Save asgrim/8b11e249177595b6cc535a0fd94ce19d to your computer and use it in GitHub Desktop.
Simplified Mezzio Application
{
"name": "asgrim/mezzio-simplified",
"description": "Simplified Mezzio project",
"type": "project",
"require": {
"php": "^7.4",
"mezzio/mezzio": "^3.2",
"laminas/laminas-diactoros": "^2.3",
"laminas/laminas-servicemanager": "^3.4",
"mezzio/mezzio-fastroute": "^3.0"
},
"license": "MIT"
}
<?php
/** @noinspection TransitiveDependenciesUsageInspection */
declare(strict_types=1);
require __DIR__ . '/../vendor/autoload.php';
use Laminas\Diactoros\Response;
use Laminas\Diactoros\Response\TextResponse;
use Laminas\Diactoros\ServerRequestFactory;
use Laminas\HttpHandlerRunner\Emitter\SapiEmitter;
use Laminas\HttpHandlerRunner\RequestHandlerRunner;
use Laminas\ServiceManager\ServiceManager;
use Laminas\Stratigility\MiddlewarePipe;
use Mezzio\Application;
use Mezzio\MiddlewareContainer;
use Mezzio\MiddlewareFactory;
use Mezzio\Response\ServerRequestErrorResponseGenerator;
use Mezzio\Router\FastRouteRouter;
use Mezzio\Router\Middleware\DispatchMiddleware;
use Mezzio\Router\Middleware\RouteMiddleware;
use Mezzio\Router\RouteCollector;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
$container = new ServiceManager();
$router = new FastRouteRouter();
$middlewarePipe = new MiddlewarePipe();
$app = new Application(
new MiddlewareFactory(new MiddlewareContainer($container)),
$middlewarePipe,
new RouteCollector($router),
new RequestHandlerRunner(
$middlewarePipe,
new SapiEmitter(),
static function () {
return ServerRequestFactory::fromGlobals();
},
new ServerRequestErrorResponseGenerator(
static function () : Response {
return new Response();
},
true
)
)
);
$app->pipe(new RouteMiddleware($router));
$app->pipe(new DispatchMiddleware());
$app->get('/hello', new class implements RequestHandlerInterface {
public function handle(ServerRequestInterface $request): ResponseInterface
{
return new TextResponse('hello world');
}
});
$app->run();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment