phpsgi / funk
PHPSGI 中间件规范的实现
dev-master / 1.0.x-dev
2017-06-03 14:09 UTC
Requires
- phpsgi/phpsgi: @dev
- universal/universal: 2.0.x-dev
Requires (Dev)
- corneltek/pux: 2.0.x-dev
- willdurand/geocoder: ^3.1
- willdurand/negotiation: ^1.4
Suggests
- corneltek/cliframework: 4.0.x-dev
- corneltek/pux: 2.0.x-dev
This package is not auto-updated.
Last update: 2024-09-12 15:03:31 UTC
README
Funk 是 PHPSGI 的一个实现。它支持使用 PHP SAPI(Apache2 mod_php
、php-fpm
、fastcgi
)实现的 HTTP 服务器,因此您可以将您的应用程序与 Funk 集成并切换到不同的 HTTP 服务器实现。
PHPSGI 和 Funk 致力于提供轻量级的 HTTP 接口和用于 Web 框架的中间件。它与 PSR-7 规范略有不同。PHPSGI 专注于核心数据结构,而不是强制组件实现接口要求。
组件
- HTTP 服务器(带事件扩展或
socket_select
) - SAPI 支持(php-fpm、Apache2 PHP 处理器服务器)
- 中间件
- 中间件组合器
- 一个简单的多路复用构建器(与 Pux 集成)
环境
// This creates $env array from $_SERVER, $_REQUEST, $_POST, $_GET ... $env = Environment::createFromGlobals();
应用程序
$app = function(array & $environment, array $response) { return [ 200, [ 'Content-Type' => 'text/plain' ], 'Hello World' ]; };
响应器
SAPI 响应器
您可以将您的应用程序与 SAPI 响应器集成以支持 Apache2 PHP 处理器 / php-fpm / fastcgi。
use Funk\Responder\SAPIResponder; $fd = fopen('php://output', 'w'); $responder = new SAPIResponder($fd); $responder->respond([ 200, [ 'Content-Type: text/plain' ], 'Hello World' ]); fclose($fd);
use Funk\Responder\SAPIResponder; $env = Environment::createFromGlobals(); $app = function(array & $environment, array $response) { return [ 200, [ 'Content-Type' => 'text/plain' ], 'Hello World' ]; }; $fd = fopen('php://output', 'w'); $responder = new SAPIResponder($fd); $responder->respond($app($env, [])); fclose($fd);
中间件
Funk\Middleware\ContentNegotiationMiddleware
Funk\Middleware\CORSMiddleware
Funk\Middleware\GeocoderMiddleware
Funk\Middleware\HeadMiddleware
Funk\Middleware\TryCatchMiddleware
Funk\Middleware\XHProfMiddleware
Funk\Middleware\XHTTPMiddleware
use Funk\Environment; use Funk\Middleware\TryCacheMiddleware; $app = function(array $environment, array $response) { return [ 200, ['Content-Type' => 'text/html' ], 'Hello World' ]; }; $middleware = new TryCatchMiddleware($app); $env = Environment::createFromGlobals(); $response = $middleware($env, [200, [], []]);
贡献
测试 XHProf 中间件
在您的 phpunit.xml
中定义您的 XHPROF_ROOT
,您可以复制 phpunit.xml.dist
到 phpunit.xml
,例如
<php> <env name="XHPROF_ROOT" value="/Users/c9s/src/php/xhprof"/> </php>