Я думаю, що можна сказати, що більшість веб-додатків базуються на парадигмі запит / відповідь. У PHP ніколи не було формальної абстракції цих об'єктів. Одна група намагається змінити це: https://github.com/php-fig/fig-standards/blob/master/proposed/http-message.md
Однак вони як би відстежували питання незмінності. З одного боку, об'єкт запиту / відповіді, як правило, потребує дуже незначних змін протягом свого життєвого циклу. З іншого боку, зокрема, об'єкт відповіді часто потребує додавання заголовків HTTP.
Крім того, незмінність ніколи насправді не натрапляла на землі PHP.
Які переваги бачать люди у використанні незмінних об'єктів запиту / відповіді?
Припустимо, ви повертаєте об’єкт json.
$response = new JsonResponse($item);
Приємно і просто. Але виявляється, що запит був запитом "Cross-Origin Resource Sharing" (CORS). Код, що генерує відповідь, не повинен хвилюватись, але десь внизу - це процес, який додасть необхідні заголовки Access-Control. Якась перевага зберегти оригінальну відповідь та створити нову з додатковими заголовками? Або це строго питання стилю програмування.
Об'єкт запиту трохи цікавіше. Це починається так само:
$request = new Request('incoming request information including uri and headers');
Початкову інформацію не потрібно змінювати. Однак, оскільки передається запит, часто виникає необхідність додати додаткову інформацію про обробку. Наприклад, у вас може бути відповідність URL-адреси, яка визначає, яку дію слід виконати для заданого запиту.
$request->setAttribute('action',function() {});
Фактично виконання дії є обов'язком процесу низхідного потоку. У вас може виникнути змінна RequestAttributesCollection, яка завершує непорушний запит, але це, як правило, трохи незручно. Ви також можете мати запит, незмінний за винятком колекції атрибутів. Винятки також є незручними. Якийсь досвід роботи з такими вимогами?