대부분의 웹 응용 프로그램은 요청 / 응답 패러다임을 기반으로하는 것이 안전하다고 생각합니다. PHP는 이러한 객체를 공식적으로 추상화 한 적이 없습니다. 한 그룹이 이것을 변경하려고합니다 : https://github.com/php-fig/fig-standards/blob/master/proposed/http-message.md
그러나 그들은 불변성 문제에 대해 부수적으로 추적했습니다. 한편으로 요청 / 응답 객체는 일반적으로 수명주기 동안 거의 변경이 필요하지 않습니다. 반면에 응답 객체는 특히 HTTP 헤더를 추가해야하는 경우가 종종 있습니다.
더욱이, 불변성은 PHP의 땅에서 실제로 잡히지 않았습니다.
불변의 요청 / 응답 객체를 사용할 때 사람들이 얻는 이점
json 객체를 반환한다고 가정 해 봅시다.
$response = new JsonResponse($item);
좋고 간단합니다. 그러나 요청은 CORS (Cross-Origin Resource Sharing) 요청이었습니다. 응답을 생성하는 코드는 신경 쓰지 말고 다운 스트림 어딘가는 필요한 Access-Control 헤더를 추가하는 프로세스입니다. 원래 응답을 유지하고 추가 헤더로 새 응답을 작성하면 어떤 이점이 있습니까? 아니면 프로그래밍 스타일의 문제입니까?
요청 객체는 좀 더 흥미 롭습니다. 동일하게 시작됩니다.
$request = new Request('incoming request information including uri and headers');
초기 정보는 변경할 필요가 없습니다. 그러나 요청이 전달됨에 따라 추가 처리 정보를 추가해야하는 경우가 종종 있습니다. 예를 들어, 주어진 요청에 대해 어떤 조치를 수행해야하는지 결정하는 URL 매 처가있을 수 있습니다.
$request->setAttribute('action',function() {});
실제로 작업을 실행하는 것은 다운 스트림 프로세스의 책임입니다. 불변의 요청을 감싸는 변경 가능한 RequestAttributesCollection을 가질 수 있지만 실제로는 다소 어색합니다. 속성 콜렉션을 제외하고는 불변의 요청을 가질 수도 있습니다. 예외도 어색한 경향이 있습니다. 이러한 종류의 요구 사항을 처리 한 경험이 있습니까?