DETAILS
I can use user state variables to store and retrieve data in Joomla sessions.
EXAMPLE set variable
$app =& JFactory::getApplication();
$app->setUserState( 'myvar', $myvarvalue );
but I can also store and retrieve variables in session using JFactory/getSession.
EXAMPLE set variable
$session =& JFactory::getSession();
$session->set('myvar', $myvarvalue);
QUESTIONs
What is the difference between the two methods?
When should I use one over the other?
In short: it’s not a big difference and you can use whatever feels right in the context. I would stick with
JApplication/setUserStatebecause I think the code is better self explanatory.The actual difference:
Both methods will store the specified state in the session.
JApplication/setUserStatewill in fact internally useJSession/setto store the state.What
JApplication/setUserStatedoes differently is that it will store every key value pair in a JRegistry. So it is equal to:So what’s the point of using a
JRegistry? It’s the pretty much the functionally providedJRegistryFormat. You can use it to both parse and format the state:It’s also worth pointing out that using
JApplication/setUserStateyour state will end up in the “default” namespace: