phpsoftbox / resource
Resource component for the PhpSoftBox framework
v1.0.0
2026-09-29 10:26 UTC
Requires
- php: ^8.5
- phpsoftbox/collection: ^1.0
Requires (Dev)
- phpsoftbox/cs-fixer: ^1.2.2
- phpsoftbox/http-message: ^1.0
- phpsoftbox/orm: ^1.0
- phpsoftbox/pagination: ^1.0
- phpunit/phpunit: ^13.3
Suggests
- phpsoftbox/orm: Provides relation load-state for whenLoaded() and requireLoaded().
Provides
None
Conflicts
None
Replaces
None
This package is auto-updated.
Last update: 2026-09-29 11:55:56 UTC
README
Компонент для сериализации данных API через ресурсы и единый envelope.
Установка
composer require phpsoftbox/resource
Быстрый старт
<?php use PhpSoftBox\Resource\ApiResponse; use PhpSoftBox\Resource\Resource; final class UserResource extends Resource { public function toArray(): array { return [ 'id' => $this->resource['id'], 'email' => $this->resource['email'], ]; } } $user = ['id' => 10, 'email' => 'demo@example.com']; $response = ApiResponse::success(new UserResource($user)); return $response; // JsonSerializable: meta и errors.fields в JSON всегда объекты
Документация
- docs/01-usage.md — envelope и ApiResponse
- docs/02-resources.md — Resource и ResourceCollection
- docs/03-errors.md — формат ошибок и ErrorBag
- docs/04-conditional.md — условные атрибуты
- docs/05-transformers.md — registry и финальная сериализация
json_encode($resource) сериализует ресурс через ResourceSerializer (скрытые поля не попадают в JSON),
when*/require* вызывают только Closure, а Resource::dropdown() принимает и имя enum-класса.
Resource::through() позволяет обогащать уже сериализованный payload через
callable или ResourcePayloadTransformerInterface, не меняя сам ресурс.