Download the PHP package phpsoftbox/application without Composer

On this page you can find all versions of the php package phpsoftbox/application. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package application

Application

Минимальное приложение для работы с PSR-15 пайплайном.

Окружение приложения

Приложение определяет собственный string-backed enum и реализует framework-контракт:

ApplicationEnvironment также принимает EnvironmentPolicyInterface и нормализованный запрос debug. Без policy методы isDebug() и isProductionLike() возвращают false.

Быстрый старт

$app->run($request) обрабатывает запрос и отправляет ответ через SapiEmitter (или переданный эмиттер). Для HEAD ответ формирует GET-маршрут, заголовки отправляются как у GET, тело — нет.

Настройка формата ошибок (Deciders)

ContentNegotiationExceptionHandler поддерживает реестр deciders для выбора формата ответа на ошибку. Decider возвращает ExceptionFormat::JSON, ExceptionFormat::HTML или null (тогда срабатывает стандартная логика по Accept и X-Requested-With).

Репортинг ошибок в ErrorHub

Если нужно добавить теги на уровне конкретного исключения:

Обработанные (soft) исключения

SoftExceptionReporter используется, когда вызывающий код осознанно выбирает fallback, но исключение нельзя скрывать из logger/ErrorHub:

В тестовом bootstrap можно зарегистрировать SoftExceptionMode::Throw. Тогда report() бросает тот же экземпляр исключения и тест не пропускает fallback-ветку незаметно. В режиме Report ошибка любого конкретного reporter-а не меняет основной control flow.

ExceptionReporterInterface не требует HTTP request. Для необработанных HTTP-исключений DefaultExceptionHandler добавляет request через ExceptionReportContext::fromRequest(); CLI, queue и интеграции передают только доступный им контекст.

RouterFactory + RouteCache

AppFactory

Регистрация middleware

Middleware из контейнера создаются лениво, в момент вызова: ошибка создания (например, отсутствующая зависимость) проходит через ErrorHandlerMiddleware, если он стоит выше в стеке.

RequestSizeLimitMiddleware проверяет Content-Length, а без него (chunked) — фактический размер тела: читает его не дальше лимита и возвращает поток в начало.

CorsMiddleware не допускает allowedOrigins: ['*'] вместе с allowCredentials: true — это исключение конфигурации: с credentials разрешённые origin нужно перечислить явно.

Обработчик ошибок с репортерами

DefaultExceptionHandler сообщает исключение репортерам (LoggerExceptionReporter, ErrorHubExceptionReporter и свои) и передаёт ответ обработчику по умолчанию. Сессия необязательна: без неё (API-приложение) ошибки валидации и CSRF отдаются обработчиком по умолчанию, а не редиректом «назад». CSRF-ошибка для JSON-клиента — ответ 419.

Группы middleware

Регистрация роутов через Application

Методы проксируются в RouteCollector, если приложение создано с Router.

Middleware для контроллеров

Рекомендуемый путь привязки Middleware — регистрация через Router на маршруты/группы; контроллеры/экшены используйте точечно.

Группы middleware для маршрутов

Ответы

В приложении доступны готовые ответы:

Пример:

Ошибки роутера

InvalidRouteParameterException (например, когда параметр не проходит валидацию) возвращает 404 Not Found в любом режиме: текст исключения описывает правила маршрута и в ответ не попадает.

Машиночитаемые JSON-ошибки

JsonExceptionHandler всегда добавляет стабильное поле code. Для предметных публичных ошибок используйте CodedHttpException либо преобразуйте исходное исключение через ExceptionMapperRegistry:

details считаются публичными данными и попадают в production response. debugMessage, исходное exception message и stack trace доступны только при включённом debug-режиме. Это изменение формата: потребителям JSON-ошибок нужно учесть новое обязательное поле code.

Доверенные прокси

TrustedProxyMiddleware ставится первым в стеке. Заголовки X-Forwarded-For, X-Forwarded-Proto, X-Forwarded-Host и X-Forwarded-Port учитываются, только если REMOTE_ADDR входит в список доверенных прокси (IP или CIDR, IPv4 и IPv6). Тогда middleware:

Остальной код (Auth, Session, Router, rate limiter) читает только REMOTE_ADDR и URI и сам заголовки X-Forwarded-* не учитывает. Без списка прокси заголовки игнорируются.

В AppBackend список задаётся переменной APP_TRUSTED_PROXIES (через запятую).

Rate limit middleware

Middleware принимает проектный key resolver, нормализует результат через RateLimitKeyNormalizerInterface и добавляет namespace. В production передавайте атомарный limiter, например RedisRateLimiter из phpsoftbox/rate-limiter:

X-RateLimit-Reset теперь является абсолютным Unix timestamp, а Retry-After — относительным числом секунд. Сырые credentials не следует возвращать из key resolver.

Авторизация приватных каналов Broadcaster

Обычно требуется эндпоинт /broadcast/auth, который выдаёт auth для приватных каналов. Пример с PushrChannelAuth:

socket_id клиент получает из события connection после подключения к WebSocket.


All versions of application with dependencies

PHP Build Version
Package Version
Requires php Version ^8.5
phpsoftbox/collection Version ^1.0
phpsoftbox/error-formatter Version ^1.0
phpsoftbox/http-client Version ^1.0
phpsoftbox/http-emitter Version ^1.0
phpsoftbox/http-message Version ^1.0
phpsoftbox/profiler Version ^1.0
phpsoftbox/rate-limiter Version ^1.0
phpsoftbox/router Version ^1.0
phpsoftbox/session Version ^1.0
phpsoftbox/view Version ^1.0
psr/container Version ^2.0
psr/http-factory Version ^1.0
psr/http-message Version ^2.0
psr/http-server-handler Version ^1.0
psr/http-server-middleware Version ^1.0
psr/log Version ^3.0
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package phpsoftbox/application contains the following files

Loading the files please wait ...