Tôi nghĩ thật an toàn khi nói rằng hầu hết các ứng dụng web đều dựa trên mô hình yêu cầu / phản hồi. PHP chưa bao giờ có một sự trừu tượng hóa chính thức của các đối tượng này. Một nhóm đang cố gắng thay đổi điều này: https://github.com/php-fig/fig-stiterias/blob/master/proposed/http-message.md
Tuy nhiên, họ đã có mặt theo dõi về vấn đề bất biến. Một mặt, đối tượng yêu cầu / phản hồi thường cần rất ít thay đổi trong vòng đời của chúng. Mặt khác, đối tượng phản hồi nói riêng thường cần thêm các tiêu đề HTTP.
Hơn nữa, tính bất biến chưa bao giờ thực sự bị cuốn vào vùng đất của PHP.
Những lợi thế nào mọi người nhìn thấy trong việc sử dụng các đối tượng yêu cầu / phản hồi bất biến?
Giả sử bạn đang trả lại một đối tượng json.
$response = new JsonResponse($item);
Đẹp và đơn giản. Nhưng hóa ra yêu cầu đó là yêu cầu Chia sẻ tài nguyên nguồn gốc (CORS). Mã tạo ra phản hồi không nên quan tâm nhưng ở đâu đó phía dưới là một quá trình sẽ thêm các tiêu đề Kiểm soát truy cập cần thiết. Bất kỳ lợi thế nào để giữ phản hồi ban đầu và tạo một phản hồi mới với các tiêu đề bổ sung? Hoặc nó là một câu hỏi về phong cách lập trình.
Đối tượng yêu cầu thú vị hơn một chút. Nó bắt đầu như nhau:
$request = new Request('incoming request information including uri and headers');
Các thông tin ban đầu không cần phải thay đổi. Tuy nhiên, vì yêu cầu được chuyển qua, thường cần thêm thông tin xử lý bổ sung. Ví dụ: bạn có thể có một công cụ đối sánh url quyết định hành động nào sẽ được thực hiện cho một yêu cầu đã cho.
$request->setAttribute('action',function() {});
Thực tế thực hiện hành động là trách nhiệm của một quá trình dòng xuống. Bạn có thể có một RequestAttributCollection có thể thay đổi, nó bao bọc yêu cầu bất biến nhưng điều đó có xu hướng hơi khó xử trong thực tế. Bạn cũng có thể có một yêu cầu không thay đổi ngoại trừ bộ sưu tập thuộc tính. Ngoại lệ cũng có xu hướng khó xử. Bất kỳ kinh nghiệm về việc đối phó với các loại yêu cầu?