<?php use mindplay\walkway\Route; use Phly\Conduit\MiddlewareInterface; use Phly\Conduit\MiddlewarePipe; use Phly\Http\Server; use Psr\Http\Message\ServerRequestInterface as Request; use Psr\Http\Message\ResponseInterface as Response; require __DIR__ . '/vendor/autoload.php'; // Simple middle-ware layer for Walkway Modules: class WalkwayMiddleware implements MiddlewareInterface { /** * @var mindplay\walkway\Module */ private $router; public function __construct(mindplay\walkway\Module $router) { $this->router = $router; } /** * {@inheritdoc} */ public function __invoke(Request $request, Response $response, callable $next = null) { $path = $request->getUri()->getPath(); $method = $request->getMethod(); $this->router->vars['request'] = $request; $this->router->vars['response'] = $response; $route = $this->router->resolve($path); if ($route === null) { return $next($request, $response); } $result = $route->execute($method); if ($result instanceof Response) { $response = $result; } else { $response->getBody()->write($result); } return $response; } } // Sample Walkway Module: $router = new mindplay\walkway\Module(); $router['hello'] = function (Route $route) { $route['world'] = function (Route $route) { $route->get = function(Request $request) { return '<h1>Hello, World!</h1><pre>' . htmlspecialchars(print_r($request, true)) . '</pre>'; }; }; }; // Configure and run Conduit: $app = new MiddlewarePipe(); $app->pipe(new WalkwayMiddleware($router)); $server = Server::createServer($app, $_SERVER, $_GET, $_POST, $_COOKIE, $_FILES); $server->listen();