<?php putenv('DEBUG=1'); require __DIR__ . '/../vendor/autoload.php'; class BodyWriterMiddleware extends Server\Layer { public function call(Server\Request $req = null, Server\Error $err = null) { $res = parent::call($req, $err); $res->write($this->config['body'] ? $this->config['body'] : 'test-layer'); return $res; } } $stack = new Server\Module(); $stack->employ(array('pattern' => '/foo*', 'class' => 'BodyWriterMiddleware', 'config' => array('body' => 'foo'))); $stack->employ(array('pattern' => '/bar*', 'class' => 'BodyWriterMiddleware', 'config' => array('body' => 'bar'))); $req = new Server\Request('GET', '/foo'); $res = $stack->call($req); $res->send();
<?php putenv('DEBUG=1'); require __DIR__ . '/../vendor/autoload.php'; class HeaderFilter extends Server\Layer { public function call(Server\Request $req = null, Server\Error $err = null) { $res = parent::call($req, $err); $res->body = '<h1>' . $res->body . '</h1>'; return $res; } } class FrontController extends Server\Controller { public function index() { return 'Hello, world!'; } } $app = new Server\Module(); $app->employ(['class' => 'HeaderFilter']); $app->map(['controller' => 'FrontController']); $app->call()->send(); // outputs: <h1>Hello, world!</h1>
<?php putenv('DEBUG=1'); require __DIR__ . '/../vendor/autoload.php'; class UriWriterModule extends Server\Module { public function call(Server\Request $req = null, Server\Error $err = null) { $this->d('CALL - DUMP: ', $this->dump()); $res = parent::call($req, $err); $res->write($this->config->get('uri', $req->uri)); return $res; } } $app = new Server\Module(); $mod1 = new UriWriterModule(); $mod2 = new UriWriterModule(); $mod2->employ(array('pattern' => '/test3*uri', 'class' => 'UriWriterModule')); $mod1->employ(array('pattern' => '/test2*uri', 'instance' => $mod2)); $app->employ(array('pattern' => '/test1*uri', 'instance' => $mod1)); // $mod1 = new UriWriterModule(); // // $mod2 = new UriWriterModule(); // $mod1// = (new Server\Module()) // ->employ(array( 'pattern' => '/test2*', 'class' => 'UriWriterModule' )); // $app = (new Server\Module()) // ->employ(array( 'pattern' => '/test1*', 'instance' => $mod1 )); $res = $app->call(new Server\Request('GET', '/test1/test2/test3/hello')); // echo $res->body; $res->send(); // d($app->resolve(new Server\Request('GET', '/test1/test2/test3'))->dump());
require __DIR__ . '/../vendor/autoload.php'; ////////////////////////////////////////////////////////////////////////////// class Renderer extends Server\Module { public function call(Server\Request $req = null, Server\Error $err = null) { $res = parent::call($req, $err); $res->body = '<pre style="border: 3px solid #00f; padding: 1em;">rendered: ' . $res->body . '</pre>'; return $res; } } ////////////////////////////////////////////////////////////////////////////// class Compression extends Server\Module { public function call(Server\Request $req = null, Server\Error $err = null) { $res = parent::call($req, $err); // $res->write('gzip:'); $res->body = '<pre style="border: 3px solid #f00; padding: 1em;">compressed: ' . $res->body . '</pre>'; return $res; } } ////////////////////////////////////////////////////////////////////////////// $app = new Server\Module(); $app->employ(array('class' => 'Compression')); $app->employ(array('class' => 'Renderer')); $app->map(array('fn' => function ($req, $res) { $res->write('CONTENT'); })); $res = $app->call(); $res->send();