itsjavi/philae

此包已废弃,不再维护。未建议替代包。

基于 PSR-7 和 PSR-15 组件构建的 PHP RESTFul、现代和最小化框架。

0.7.0 2017-05-27 07:38 UTC

This package is not auto-updated.

Last update: 2020-01-17 00:49:45 UTC


README

Latest Version on Packagist Software License Build Status Coverage Status Quality Score Total Downloads

基于 PSR-7 和 PSR-15 组件构建的 PHP RESTFul、现代和最小化框架。

该项目符合 PSR-1PSR-2PSR-4PSR-7PSR-11PSR-15 标准。如果发现合规性问题,请通过拉取请求发送补丁。

Philae and Rosetta

目标

  • 简单:尽可能保持核心源代码的简洁。
  • 灵活:尽可能减少依赖。
  • 可预测:成为标准下基本现代组件的粘合剂,有适当的文档。
  • 强大:经过良好测试和健壮的代码,适用于任何场景和环境。

组件

安装

通过 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 了解详细信息。

致谢

许可证

MIT 许可证 (MIT)。有关更多信息,请参阅 许可证文件