phpsoftbox / application
Application core for the PhpSoftBox framework
Installs: 3
Dependents: 1
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
pkg:composer/phpsoftbox/application
Requires
- php: ^8.4
- phpsoftbox/http-emitter: dev-master
- phpsoftbox/http-message: dev-master
- phpsoftbox/rate-limiter: dev-master
- phpsoftbox/router: dev-master
- psr/container: ^2.0
- psr/http-factory: ^1.0
- psr/http-message: ^2.0
- psr/http-server-handler: ^1.0
- psr/http-server-middleware: ^1.0
Requires (Dev)
- phpunit/phpunit: ^11.2
This package is auto-updated.
Last update: 2026-02-06 10:48:33 UTC
README
Минимальное приложение для работы с PSR-15 пайплайном.
Быстрый старт
use PhpSoftBox\Application\Application; use PhpSoftBox\Application\ErrorHandler\JsonExceptionHandler; use PhpSoftBox\Application\ErrorHandler\HtmlExceptionHandler; use PhpSoftBox\Application\ErrorHandler\ContentNegotiationExceptionHandler; use PhpSoftBox\Application\Middleware\ErrorHandlerMiddleware; use PhpSoftBox\Router\Router; $router = new Router($resolver, $dispatcher, $collector); $exceptionHandler = new ContentNegotiationExceptionHandler( new JsonExceptionHandler($responseFactory, $streamFactory, includeDetails: true), new HtmlExceptionHandler($responseFactory, $streamFactory, includeDetails: true), ); $app = new Application($router, [ new ErrorHandlerMiddleware($exceptionHandler), ]); $response = $app->handle($request);
RouterFactory + RouteCache
use PhpSoftBox\Application\RouterFactory; use PhpSoftBox\Router\Cache\RouteCache; use PhpSoftBox\Router\Dispatcher; $cache = new RouteCache($cacheStorage); $factory = new RouterFactory(new Dispatcher(), $cache); $router = $factory->create(function ($routes) { $routes->get('/users', [UserController::class, 'index']); });
AppFactory
use PhpSoftBox\Application\AppFactory; $app = AppFactory::createFromContainer($container, environment: 'prod'); if (!$app->routesCached()) { require __DIR__ . '/routes.php'; }
Регистрация middleware
use PhpSoftBox\Application\Application; use PhpSoftBox\Application\Middleware\ErrorHandlerMiddleware; use PhpSoftBox\Application\Middleware\RequestSizeLimitMiddleware; use PhpSoftBox\Session\SessionMiddleware; $app = new Application($router, container: $container); $app->add(new ErrorHandlerMiddleware($exceptionHandler), priority: 100); $app->add(RequestSizeLimitMiddleware::class); $app->alias('session', SessionMiddleware::class); $app->middlewareGroup('web', ['session']);
Группы middleware
$webApp = $app->withMiddlewareGroups(['web']); $response = $webApp->handle($request);
Регистрация роутов через Application
$app->get('/users', [UserController::class, 'index']); $app->post('/users', [UserController::class, 'store']);
Методы проксируются в RouteCollector, если приложение создано с Router.
Middleware для контроллеров
$app->controllerMiddleware(UserController::class, ['auth']); $app->controllerMiddleware(UserController::class, ['admin'], only: ['store', 'update']);
Рекомендуемый путь привязки Middleware — регистрация через Router на маршруты/группы; контроллеры/экшены используйте точечно.
Группы middleware для маршрутов
use PhpSoftBox\Application\Middleware\KernelRouteMiddlewareResolver; use PhpSoftBox\Router\Dispatcher; use PhpSoftBox\Router\Router; $app->alias('auth', \PhpSoftBox\Auth\Middleware\AuthMiddleware::class); $app->middlewareGroup('api', ['auth']); $dispatcher = new Dispatcher( handlerResolver: null, middlewareResolver: new KernelRouteMiddlewareResolver($app->middlewareManager(), $container), ); $router = new Router($resolver, $dispatcher, $collector); $collector->group('/api', function ($routes) { $routes->get('/users', [UserController::class, 'index']); }, ['api']);