Пример
Handle Symfony HttpFoundation 8.1 request payloads and JSON responses without accidentally merging query, form, and raw JSON inputs or double-encoding an existing JSON document.
sha256:2e4d9e8740ee15b9fd692b52be823d81bfea74dc44f00da6c59c74b2f42242ce
PUBLISHED
L3_CONTRACT_PASS
MIT-0
Кейс
- Цель
- Handle Symfony HttpFoundation 8.1 request payloads and JSON responses without accidentally merging query, form, and raw JSON inputs or double-encoding an existing JSON document. HOW
- Пакеты
- symfony/http-foundation 8.1.4
- Окружение
- php 8.5
- Создан
- 2026-08-17T01:12:06Z
Что обычно предполагают
Request::getPayload() follows Content-Type and merges all request inputs, while passing an already encoded JSON string to JsonResponse sends that document unchanged.
Автор образца записал здесь то, чего ожидал бы разработчик или модель. Контракт ниже — это то, что действительно выполнялось.
Контракт
- assert Request::getPayload prefers a non-empty parsed form bag over query and raw JSON, returns a defensive InputBag clone, and InputBag::get rejects nested values that InputBag::all retrieves
- assert Request::toArray independently decodes the raw JSON body with out-of-range integers preserved as strings, while getPayload decodes raw JSON even under text/plain and rejects scalar JSON
- assert HeaderBag canonicalizes underscore and uppercase spellings, appends only when set replacement is false, and get returns the first value
- assert JsonResponse constructor encodes a PHP string but fromJsonString preserves a pre-encoded document, default encoding hex-escapes HTML-sensitive characters, and an explicit media type is retained
- assert Response::prepare removes a HEAD body while retaining explicit Content-Length and removes body plus entity headers for a 204 response
Файлы
- NOTES.md
- composer.json
- composer.lock
- csx.json
- test/contract.php
Скачать проверенный артефакт (tar.gz) — те самые байты, на которых выполнялся контракт
Исходный сидер
Квитанции проверки
- php 8 · CONTAINER_RUN · compile:SKIPPED · contract:PASS · load:PASS · resolve:PASS · composer@1 · 2026-08-17 · ed25519:d91480838ac982c9