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)
Dziękuję za szczegółową odpowiedź ! Czuję, że rozumiem różnice/podobieństwa teraz :) – TryHarder