sasezaki / backbeard
PHP 的另一个面向最小化 DSL 风格的框架
0.8.0
2019-06-15 03:31 UTC
Requires
- php: >=7.2.0
- nikic/fast-route: ^0.6
- psr/http-factory: ^1.0
- psr/http-message: ^1.0.0
- struggle-for-php/sfp-stream-view: ^0.1.0
Requires (Dev)
README
Backbeard 是 PHP 的另一个面向最小化 DSL 风格的框架。
原则
yield $router($request) => $action();
使用
<?php use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Message\ResponseInterface; use Backbeard\Dispatcher; use Backbeard\ValidationError; $routingFactory = function ($container) { yield '/hello' => 'hello'; $error = (yield ['POST' => '/entry/{id:[0-9]}'] => function ($id) { if ($this->getRequest()->getPost()['NAME'] == 'wtf') { return ['var1' => 'baz']; // will be render entry.phtml } else { return new ValidationError(['error message!']); } }); yield '/entry/{id:[0-9]}' => function ($id) use ($error) { $message = $error ? htmlspecialchars(current($error->getMessages())) :''; return "Hello $id ".$message. '<form method="POST" action="/entry/'.$id.'">'. 'NAME<input type="text" name="NAME">'. '</form>'; }; yield [ 'GET' => '/foo', 'Header' => [ 'User-Agent' => function($headers){ if (!empty($headers) && strpos(current($headers), 'Coffee') === 0) { return true; } } ] ] => function () { return $this->getResponseFactory()->createResponse(418); }; // status code "I'm a teapot" yield (ServerRequestInterface $request) { return true; } => function () { /** @var ResponseInterface $this */ return $this; }; }; (new Dispatcher($routingFactory($container)))->dispatch(new Request);
使用 composer 安装
composer require sasezaki/backbeard dev-master
作为 zend-stratigility 的中间件使用
https://github.com/struggle-for-php/sfp-stratigility-skeleton
-
php composer.phar create-project -s dev struggle-for-php/sfp-stratigility-skeleton path/to/install
安装完成后,您可以使用 PHP 内置的 Web 服务器尝试运行
-
php -S localhost:8080 -t public/ public/index.php
注意事项
此项目是针对基于生成器路由的实验性证明,不适用于生产使用。请自行承担风险。