示例#1
0
<?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>
示例#3
0
<?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();