मैंने लोगों को देखा है (जो आमतौर पर अच्छा कोड लिखते हैं) $_POSTइस तरह से कोड के साथ सरणी को सीधे बदल देते हैं :
// Add some value that wasn't actually posted
$_POST['last_activity'] = time();
// Alter an existing post value
$_POST['name'] = trim($_POST['name']);
// Our pretend function
// Pass the entire $_POST array as data to work with in the function
// The function update_record() will read only the values we actually need
update_record($_POST);
// ...That sure was easier than creating a new array
// with only the $_POST values we actually need.
यह समझ में आता है कि update_record()सीधे $ _POST का उपयोग नहीं करना चाहिए, इसलिए हम उदाहरण के लिए डेटा के अन्य सरणियों को पास कर सकते हैं, लेकिन निश्चित रूप से यह आलसी, खराब डिज़ाइन या संभवतः गलत है? हालाँकि, हम अभी भी एक मान्य सरणी पास कर रहे हैं update_record(), इसलिए एक नया निर्माण क्यों करें?
यह प्रश्न का बिंदु नहीं है, केवल उपयोग का एक उदाहरण है। हालांकि, मैंने बहुत से लोगों को यह कहते सुना है कि यह $_REQUESTडेटा के साथ नहीं किया जाना चाहिए , और यह बुरा अभ्यास है। लेकिन क्यों? हानिरहित पर्याप्त दिखता है।
उदाहरण:
डिफ़ॉल्ट
$_GET(या पोस्ट) मान सेट करना जो वास्तव में मौजूद नहीं हैउन
$_POSTमानों को जोड़ना जो वास्तव में एक फॉर्म सबमिशन के बाद पोस्ट नहीं किए गए थेस्क्रिप्ट में बहुत जल्दी
$_GETसरणी मानों या कुंजियों को सीधे साफ़ करना या फ़िल्टर करना (फ़ॉलबैक सैनिटेशन ... क्यों नहीं?)$_POSTकिसी इनपुट को डिफ़ॉल्ट मान के साथ जमा करने के लिए फ़ॉर्म सबमिट करने से पहले मैन्युअल रूप से सेट करना (जब इनपुट$_POSTडिफ़ॉल्ट मान के लिए पढ़ता है ; मैंने ऐसा किया है)अपने स्वयं के
$_SERVERमूल्यों को बनाना ? ज़रूर, अरे क्यों नहीं?कैसे दूसरों के बारे में, पसंद है
$_COOKIEऔर$_SESSION? निश्चित रूप से हमें उन लोगों को सीधे तौर पर संशोधित करना होगा? फिर दूसरे क्यों नहीं?
सुपरग्लोबल्स का प्रत्यक्ष संशोधन कभी नहीं किया जाना चाहिए, या क्या कुछ उदाहरणों में ऐसा करना ठीक है ?