मुझे लगता है कि यह कहना सुरक्षित है कि अधिकांश वेब अनुप्रयोग अनुरोध / प्रतिक्रिया प्रतिमान पर आधारित हैं। PHP में कभी भी इन वस्तुओं का औपचारिक अमूर्तन नहीं हुआ है। एक समूह इसे बदलने की कोशिश कर रहा है: https://github.com/php-fig/fig-standards/blob/master/proposed/http-message.md
हालांकि, उन्होंने अपरिवर्तनीयता के मुद्दे पर पक्ष रखा। एक ओर, अनुरोध / प्रतिक्रिया वस्तु को आम तौर पर उनके जीवन चक्र के दौरान बहुत कम परिवर्तन की आवश्यकता होती है। दूसरी ओर, विशेष रूप से प्रतिक्रिया ऑब्जेक्ट को अक्सर HTTP हेडर जोड़ने की आवश्यकता होती है।
इसके अलावा, अपरिवर्तनीयता वास्तव में कभी भी PHP की भूमि पर नहीं पकड़ी गई है।
अपरिवर्तनीय अनुरोध / प्रतिक्रिया वस्तुओं का उपयोग करने में लोगों को क्या फायदे मिलते हैं?
मान लीजिए कि आप एक वस्तु को वापस कर रहे हैं।
$response = new JsonResponse($item);
अच्छा और सरल। लेकिन यह पता चला है कि अनुरोध एक क्रॉस-ऑरिजनल रिसोर्स शेयरिंग (कोर) अनुरोध था। प्रतिक्रिया उत्पन्न करने वाले कोड को परवाह नहीं करनी चाहिए, लेकिन कहीं-कहीं डाउनस्ट्रीम एक ऐसी प्रक्रिया है जो आवश्यक एक्सेस-कंट्रोल हेडर को जोड़ेगी। मूल प्रतिक्रिया रखने और अतिरिक्त हेडर के साथ एक नया बनाने का कोई फायदा? या यह सख्ती से प्रोग्रामिंग शैली का सवाल है।
अनुरोध वस्तु थोड़ी अधिक रोचक है। यह उसी से शुरू होता है:
$request = new Request('incoming request information including uri and headers');
प्रारंभिक जानकारी को बदलने की आवश्यकता नहीं है। हालाँकि, जैसा कि अनुरोध के साथ पारित हो गया है, अक्सर अतिरिक्त प्रसंस्करण जानकारी जोड़ने की आवश्यकता होती है। उदाहरण के लिए, आपके पास एक url मिलानकर्ता हो सकता है जो यह निश्चय करता है कि दिए गए अनुरोध के लिए क्या कार्यवाही निष्पादित की जानी चाहिए।
$request->setAttribute('action',function() {});
वास्तव में कार्रवाई को अंजाम देना एक डाउन स्ट्रीम प्रक्रिया की जिम्मेदारी है। आपके पास एक परिवर्तनशील अनुरोध हो सकता है। गुणनखंडन जो अपरिवर्तनीय अनुरोध को लपेटता है, लेकिन यह व्यवहार में थोड़ा अजीब है। आपके पास एक अनुरोध हो सकता है जो एक विशेषता संग्रह को छोड़कर अपरिवर्तनीय है। अपवाद के रूप में अच्छी तरह से अजीब हो जाता है। आवश्यकताओं के इन प्रकार के साथ काम करने पर कोई अनुभव?