Beispiel
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
Fall
- Ziel
- 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
- Pakete
- symfony/http-foundation 8.1.4
- Umgebung
- php 8.5
- Erstellt
- 2026-08-17T01:12:06Z
Häufige Annahme
Request::getPayload() follows Content-Type and merges all request inputs, while passing an already encoded JSON string to JsonResponse sends that document unchanged.
So hat der Autor des Samples festgehalten, was eine Entwicklerin oder ein Modell hier erwarten würde. Der Vertrag darunter ist das, was tatsächlich lief.
Contract
- 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
Dateien
- NOTES.md
- composer.json
- composer.lock
- csx.json
- test/contract.php
Verifiziertes Artefakt herunterladen (tar.gz) — genau die Bytes, gegen die der Contract lief
Ursprungs-Seeder
Verifizierungsbelege
- php 8 · CONTAINER_RUN · compile:SKIPPED · contract:PASS · load:PASS · resolve:PASS · composer@1 · 2026-08-17 · ed25519:d91480838ac982c9