मुझे $_SESSION
, $_POST
, $_GET
, और $_COOKIE
ओओपी संरचनाओं में लपेटना पसंद है।
मैं इस विधि का उपयोग कोड है कि स्वच्छता और सत्यापन, आवश्यक isset()
चेकों के सभी, nonces, setcookie
मानकों, आदि यह भी ग्राहक कोड अधिक पठनीय होने की अनुमति देता संभालती है (और मुझे भ्रम है कि इसे और अधिक पोषणीय है देता है केंद्रीकृत करने के लिए)।
इस तरह की संरचना के उपयोग को लागू करना मुश्किल हो सकता है, खासकर अगर एकाधिक कोडर हैं। $_GET
, $_POST
, और $_COOKIE
(मुझे विश्वास है) के साथ, आपका प्रारंभिक कोड डेटा की प्रतिलिपि बना सकता है, फिर सुपरग्लोबल को नष्ट कर सकता है। हो सकता है कि एक चालाक विनाशक $ _SESSION (भार पर $ _SESSION मिटाएं, इसे वापस विनाशक में लिखें) के साथ संभव बना सकता है, हालांकि मैंने कोशिश नहीं की है।
हालांकि, मैं आमतौर पर इनमें से किसी भी प्रवर्तन तकनीकों का उपयोग नहीं करता हूं। इसका उपयोग करने के बाद, सत्र कक्षा के बाहर कोड में $_SESSION
देखकर बस अजीब लगता है, और मैं ज्यादातर एकल काम करता हूं।
संपादित
कुछ नमूने यहां ग्राहक कोड के मामले में यह किसी को मदद करता है है,। मुझे यकीन है कि प्रमुख चौखटे में से किसी को देख आप बेहतर विचार देना होगा हूँ ...
$post = Post::load();
$post->numeric ('member_age');
$post->email ('member_email');
$post->match ('/regex/','member_field');
$post->required ('member_first_name','member_email');
$post->inSet ('member_status',array('unemployed','retired','part-time','full-time'));
$post->money ('member_salary');
$post->register ('member_last_name'); // no specific requirements, but we want access
if ($post->isValid())
{
// do good stuff
$firstName = $post->member_first_name;
}
else
{
// do error stuff
}
पोस्ट और उसके दोस्तों के सभी एक आधार वर्ग कि कोर सत्यापन कोड लागू करता है से निकाले जाते हैं, रूप की तरह अपनी विशिष्ट कार्यक्षमता जोड़ने टोकन, सत्र कुकी कॉन्फ़िगरेशन, जो भी हो।
आंतरिक रूप से, कक्षा में वैध डेटा का संग्रह होता है जो $_POST
से निकाला जाता है क्योंकि सत्यापन विधियों को बुलाया जाता है, फिर उन्हें जादू __get
विधि का उपयोग करके गुणों के रूप में लौटाता है। असफल फ़ील्ड इस तरह से नहीं पहुंचा जा सकता है।मेरी सत्यापन विधियां (required
को छोड़कर) खाली फ़ील्ड पर असफल न हों, और उनमें से कई एक साथ कई फ़ील्ड पर काम करने की अनुमति देने के लिए func_get_args
का उपयोग करें। कुछ विधियों (जैसे money
) स्वचालित रूप से डेटा को कस्टम मान प्रकारों में अनुवादित करते हैं।
त्रुटि मामले में, मेरे पास डेटा को प्रारूप में सहेजने का एक तरीका है जिसे सत्र में सहेजा जा सकता है और मूल रूप से रीडायरेक्ट करने के बाद फ़ॉर्म को पूर्व-पॉप्युलेट करने और त्रुटियों को हाइलाइट करने के लिए उपयोग किया जाता है।
इस पर सुधार करने का एक तरीका एक फॉर्म क्लास में सत्यापन जानकारी को संग्रहीत करना होगा जिसका उपयोग फॉर्म और पावर क्लाइंट-साइड सत्यापन को प्रस्तुत करने के साथ-साथ जमा करने के बाद डेटा को साफ करने के लिए किया जाता है।
उन्हें सत्यापित करने के बाद वैरिएबल में आवश्यक डेटा को ले जाएं, क्योंकि वहां तक डेटा मान्य होने तक संदिग्ध है। –
आपका दृष्टिकोण असामान्य है, और स्थानीय गुण में सुपरग्लोबल को अलियासिंग करने से कोड डेवलपर भ्रमित हो सकते हैं। लेकिन यह निश्चित रूप से कानूनी है, और यदि आपका ऑब्जेक्ट इसका उपयोग करता है या फ़िल्टर करता है (उदा। कॉन्फ़िगर सहायक) शायद एक अच्छा विचार है। – mario