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)
Dank für die ausführliche Antwort ! Ich fühle, dass ich jetzt die Unterschiede/Gemeinsamkeiten verstehe :) – TryHarder