2012-11-02 11 views
8

DETAILSWann sollte ich setUserState in Joomla verwenden?

I Variablen Benutzerstatus Sitzungen zum Speichern und Abrufen von Daten in Joomla verwenden kann.

Beispiel Variable

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

aber ich kann auch speichern und Variablen in der Sitzung abgerufen wird unter Verwendung von JFactory/getSession.

Beispiel Setvariable

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

Fragen

Was ist der Unterschied zwischen den beiden Methoden? Wann sollte ich eins über das andere benutzen?

Antwort

8

Kurz gesagt: es ist kein großer Unterschied und Sie können verwenden, was sich im Kontext richtig anfühlt. Ich würde bei JApplication/setUserState bleiben, weil ich denke, dass der Code besser selbsterklärend ist.

Der eigentliche Unterschied:

Beide Methoden speichert den angegebenen Status in der Sitzung. JApplication/setUserState wird intern JSession/set verwenden, um den Status zu speichern.

Was JApplication/setUserState anders macht, ist, dass es jedes Schlüsselwertpaar in einem JRegistry gespeichert werden. So ist es gleich:

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

Also, was ist der Punkt ein JRegistry der Verwendung? Es ist das ziemlich funktionell zur Verfügung gestellte JRegistryFormat. Sie können es sowohl Parse verwenden und formatieren Sie den Zustand:

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

Es ist auch erwähnenswert, dass JApplication/setUserState Ihr Zustand verwendet, wird in der „default“ Namespace am Ende:

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

Dank für die ausführliche Antwort ! Ich fühle, dass ich jetzt die Unterschiede/Gemeinsamkeiten verstehe :) – TryHarder