A minimal middleware based micro framework using PHP Framework Interop Group - PSR, with the goal is to achive the best combination of flexibility and simplicity by using standards.
- Basic Coding Standard (1)
- Coding Style Guide (2)
- Logger Interface (3)
- Autoloading Standard (4)
- HTTP Message Interface (7)
- Container Interface (11)
- HTTP Handlers (15)
- HTTP Factories (17)
- php: ^7.2
- psr/container: ^1.0
- psr/http-factory: ^1.0.1
- psr/http-message-implementation: ^1.0
- psr/http-message: ^1.0.1
- psr/http-server-handler: ^1.0.1
- psr/http-server-middleware: ^1.0.1
- psr/log: ^1.1
Any Router which implements Chubbyphp\Framework\Router\RouterInterface can be used.
- aura/router: ^3.1
- nikic/fast-route: ^1.3
- guzzlehttp/psr7: ^1.4.2 (with http-interop/http-factory-guzzle: ^1.0)
- nyholm/psr7: ^1.0
- slim/psr7: ^0.4
- zendframework/zend-diactoros: ^2.0
Through Composer as chubbyphp/chubbyphp-framework.
composer require chubbyphp/chubbyphp-framework "^1.2" \
aura/router "^3.1" zendframework/zend-diactoros "^2.0"<?php
declare(strict_types=1);
namespace App;
use Chubbyphp\Framework\Application;
use Chubbyphp\Framework\ErrorHandler;
use Chubbyphp\Framework\ExceptionHandler;
use Chubbyphp\Framework\Middleware\MiddlewareDispatcher;
use Chubbyphp\Framework\RequestHandler\CallbackRequestHandler;
use Chubbyphp\Framework\Router\AuraRouter;
use Chubbyphp\Framework\Router\Route;
use Psr\Http\Message\ServerRequestInterface;
use Zend\Diactoros\ResponseFactory;
use Zend\Diactoros\ServerRequestFactory;
$loader = require __DIR__.'/vendor/autoload.php';
set_error_handler([ErrorHandler::class, 'handle']);
$responseFactory = new ResponseFactory();
$route = Route::get('/hello/{name}', 'hello', new CallbackRequestHandler(
function (ServerRequestInterface $request) use ($responseFactory) {
$name = $request->getAttribute('name');
$response = $responseFactory->createResponse();
$response->getBody()->write(sprintf('Hello, %s', $name));
return $response;
}
))->pathOptions(['tokens' => ['name' => '[a-z]+']]);
$app = new Application(
new AuraRouter([$route]),
new MiddlewareDispatcher(),
new ExceptionHandler($responseFactory, true)
);
$app->send($app->handle(ServerRequestFactory::fromGlobals()));composer require chubbyphp/chubbyphp-framework "^1.2" \
nikic/fast-route "^1.3" zendframework/zend-diactoros "^2.0"<?php
declare(strict_types=1);
namespace App;
use Chubbyphp\Framework\Application;
use Chubbyphp\Framework\ErrorHandler;
use Chubbyphp\Framework\ExceptionHandler;
use Chubbyphp\Framework\Middleware\MiddlewareDispatcher;
use Chubbyphp\Framework\RequestHandler\CallbackRequestHandler;
use Chubbyphp\Framework\Router\FastRouteRouter;
use Chubbyphp\Framework\Router\Route;
use Psr\Http\Message\ServerRequestInterface;
use Zend\Diactoros\ResponseFactory;
use Zend\Diactoros\ServerRequestFactory;
$loader = require __DIR__.'/vendor/autoload.php';
set_error_handler([ErrorHandler::class, 'handle']);
$responseFactory = new ResponseFactory();
$route = Route::get('/hello/{name:[a-z]+}', 'hello', new CallbackRequestHandler(
function (ServerRequestInterface $request) use ($responseFactory) {
$name = $request->getAttribute('name');
$response = $responseFactory->createResponse();
$response->getBody()->write(sprintf('Hello, %s', $name));
return $response;
}
));
$app = new Application(
new FastRouteRouter([$route]),
new MiddlewareDispatcher(),
new ExceptionHandler($responseFactory, true)
);
$app->send($app->handle(ServerRequestFactory::fromGlobals()));Dominik Zogg 2019



