itsjavi / philae
此包已废弃,不再维护。未建议替代包。
基于 PSR-7 和 PSR-15 组件构建的 PHP RESTFul、现代和最小化框架。
0.7.0
2017-05-27 07:38 UTC
Requires
- php: ^7.0
- http-interop/http-middleware: ^0.4
- league/container: ~2.4.1
- middlewares/error-handler: ~0.6.0
- middlewares/utils: ~0.11.1
- nikic/fast-route: ~1.2.0
- zendframework/zend-diactoros: ~1.4.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.3
- phpunit/phpunit: ^5.7
- squizlabs/php_codesniffer: ^2.8
This package is not auto-updated.
Last update: 2020-01-17 00:49:45 UTC
README
基于 PSR-7 和 PSR-15 组件构建的 PHP RESTFul、现代和最小化框架。
该项目符合 PSR-1、PSR-2、PSR-4、PSR-7、PSR-11 和 PSR-15 标准。如果发现合规性问题,请通过拉取请求发送补丁。
目标
- 简单:尽可能保持核心源代码的简洁。
- 灵活:尽可能减少依赖。
- 可预测:成为标准下基本现代组件的粘合剂,有适当的文档。
- 强大:经过良好测试和健壮的代码,适用于任何场景和环境。
组件
- League Container 作为应用程序核心。它支持 PSR-11 容器。
- Zend Diactoros 作为 PSR-7 HTTP 消息 实现。
- 一些 PSR-15 中间件,如 error-handler 等。
- FastRoute 作为核心路由引擎。
安装
通过 Composer
$ composer require itsjavi/philae
通过 Git
$ git clone https://github.com/itsjavi/philae.git
使用 philae-skeleton 创建项目骨架
$ composer create-project itsjavi/philae-skeleton myproject
用法
<?php use Middlewares\ErrorHandlerDefault; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Message\ResponseInterface; include __DIR__ . '/vendor/autoload.php'; // Initialize the app with the default dependencies and some essential middleware. $app = new Philae\Application(); $app->addServiceProvider(new \Philae\DefaultServiceProvider()); $app->setMiddlewares( [ // error handler (new Middlewares\ErrorHandler(ErrorHandlerDefault::class))->catchExceptions(true), // dispatch the request new Philae\Middlewares\RouteDispatcher(), // transform the handler response new Philae\Middlewares\ResponseTransformer(), // execute the request handler (new Philae\Middlewares\RequestHandler())->arguments($app->getResponse()), ] ); // Define the routes $router = $app->getRouter(); $router->get('/', function (ServerRequestInterface $req, ResponseInterface $res) { $res->getBody()->write('<h1>Hello, World!</h1>' . PHP_EOL); return $res; }); $router->get('/{name}', function (ServerRequestInterface $req, ResponseInterface $res, array $params) { $res->getBody()->write('<h1>Hello, ' . $params['name'] . '!</h1>' . PHP_EOL); return $res; }); $router->get('/foo', MyController::class); // Compatible also with callable objects implementing __invoke $router->post('/foo/{id}', MyController::class . '::create'); // and with any other callable definition $router->put('/foo/{id}', [MyController::class, 'edit']); // Process the middlewares and send the response: $app->execute();
测试
$ composer test
或
$ vendor/bin/phpunit $ vendor/bin/phpcs
贡献
请参阅 CONTRIBUTING 了解详细信息。
致谢
- Nikita Popov (FastRoute)
- Oscar Otero (PSR-7 中间件)
- 所有贡献者
许可证
MIT 许可证 (MIT)。有关更多信息,请参阅 许可证文件。