2012-11-02 14 views
8

विवरणमुझे जूमला में setUserState का उपयोग कब करना चाहिए?

मैं स्टोर और जूमला सत्रों में डेटा पुनः प्राप्त करने के लिए उपयोगकर्ता राज्य चर का उपयोग कर सकते हैं।

उदाहरण चर

$app =& JFactory::getApplication(); 
$app->setUserState('myvar', $myvarvalue); 

सेट लेकिन मैं यह भी स्टोर और JFactory/getSession का उपयोग कर सत्र में चर प्राप्त कर सकते हैं।

उदाहरण चर सेट

$session =& JFactory::getSession(); 
$session->set('myvar', $myvarvalue); 

सवाल

दो तरीकों के बीच क्या अंतर है? मुझे दूसरे पर एक का उपयोग कब करना चाहिए?

उत्तर

8

संक्षेप में: यह कोई बड़ा अंतर नहीं है और आप संदर्भ में जो भी सही महसूस कर सकते हैं उसका उपयोग कर सकते हैं। मैं JApplication/setUserState के साथ रहूंगा क्योंकि मुझे लगता है कि कोड बेहतर आत्म व्याख्यात्मक है।

वास्तविक अंतर:

दोनों ही तरीकों से सत्र में निर्दिष्ट राज्य स्टोर करेगा। JApplication/setUserState वास्तव में राज्य को स्टोर करने के लिए आंतरिक रूप से JSession/set का उपयोग करेगा।

क्या JApplication/setUserState अलग ढंग से करता है कि यह एक JRegistry में हर महत्वपूर्ण मूल्य जोड़ी की दुकान नहीं है। तो यह के बराबर है:

$session = JFactory::getSession(); 
$registry = $session->get('registry'); 
$registry->set('myvar', $myvarvalue); 

तो एक JRegistry का उपयोग कर की बात क्या है? यह बहुत ही कार्यात्मक रूप से JRegistryFormat प्रदान किया गया है। आप दोनों पार्स करने के लिए इसका इस्तेमाल करते हैं और राज्य फ़ॉर्मेट कर सकते हैं:

$session = JFactory::getSession(); 
$registry = $session->get('registry'); 
$json = $registry->toString('JSON'); 
$xml = $registry->toString('XML'); 

यह भी उनका कहना है कि JApplication/setUserState अपने राज्य का उपयोग "डिफ़ॉल्ट" नाम स्थान में खत्म हो जाएगा लायक है:

$app = JFactory::getApplication(); 
$app->setUserState('myvar', $myvarvalue); 
// $_SESSION['default']['registry']->set('myvar', $myvarvalue) 
+0

विस्तृत जवाब के लिए धन्यवाद ! मुझे लगता है कि मैं अब मतभेद/समानता को समझता हूं :) – TryHarder

संबंधित मुद्दे