Penso sia sicuro affermare che la maggior parte delle applicazioni web si basano sul paradigma richiesta / risposta. PHP non ha mai avuto un'astrazione formale di questi oggetti. Un gruppo sta cercando di cambiare questo: link
Tuttavia, si sono in qualche modo distaccati sulla questione dell'immutabilità. Da un lato, l'oggetto richiesta / risposta generalmente ha bisogno di poche modifiche durante il loro ciclo di vita. D'altra parte, l'oggetto response in particolare spesso ha bisogno di intestazioni HTTP da aggiungere.
Inoltre, l'immutabilità non ha mai preso piede nella terra di PHP.
Quali vantaggi vedono le persone nell'usare oggetti immutabili di richiesta / risposta?
Supponiamo che tu stia restituendo un oggetto json.
$response = new JsonResponse($item);
Bello e semplice. Ma si scopre che la richiesta era una richiesta CORS (Cross-Origin Resource Sharing). Il codice che genera la risposta non dovrebbe interessare ma da qualche parte a valle è un processo che aggiungerà le intestazioni necessarie per il controllo degli accessi. Qualunque vantaggio nel mantenere la risposta originale e crearne una nuova con le intestazioni aggiuntive? O è strettamente una questione di stile di programmazione.
L'oggetto richiesta è un po 'più interessante. Inizia lo stesso:
$request = new Request('incoming request information including uri and headers');
Le informazioni iniziali non devono essere modificate. Tuttavia, man mano che la richiesta viene inoltrata, è spesso necessario aggiungere ulteriori informazioni di elaborazione. Ad esempio, potresti avere un url matcher che decide quale azione deve essere eseguita per una determinata richiesta.
$request->setAttribute('action',function() {});
L'esecuzione effettiva dell'azione è responsabilità di un processo downstream. Potresti avere una RequestAttributesCollection mutabile che avvolge la richiesta immutabile, ma che in pratica tende ad essere un po 'scomoda. Potresti anche avere una richiesta immutabile, fatta eccezione per una raccolta di attributi. Anche le eccezioni tendono ad essere imbarazzanti. Qualche esperienza su come affrontare questo tipo di requisiti?