2012-11-02 34 views
8

DANEKiedy należy używać setUserState w Joomla?

mogę używać zmiennych stanu łatwy do przechowywania i pobierania danych w sesji Joomla.

Przykład ustawić zmienną

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

ale mogę także przechowywać i pobierać zmienne sesji używając JFactory/getSession.

Przykład ustawić zmienną

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

pytania

Jaka jest różnica między tymi dwoma metodami? Kiedy należy używać jednego nad drugim?

Odpowiedz

8

W skrócie: to nie jest duża różnica i można używać wszystkiego, co jest właściwe w danym kontekście. Trzymałbym się z JApplication/setUserState, ponieważ myślę, że kod jest lepiej zrozumiały.

Rzeczywista różnica:

Obie metody będzie przechowywać określony stan w sesji. JApplication/setUserState będzie faktycznie używać wewnętrznie JSession/set do przechowywania stanu.

To, co robi JApplication/setUserState w inny sposób, to przechowywanie każdej pary wartości klucza w JRegistry. Więc jest równa:

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

Jaki jest sens używania JRegistry? Jest to praktycznie funkcjonalnie dostarczony JRegistryFormat. Można go używać zarówno do analizowania i formatowania Stan:

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

Warto również podkreślić, że za pomocą JApplication/setUserState swój stan skończy się w „domyślnym” nazw:

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

Dziękuję za szczegółową odpowiedź ! Czuję, że rozumiem różnice/podobieństwa teraz :) – TryHarder