2012-11-02 18 views
8

DETTAGLIQuando dovrei usare setUserState in Joomla?

posso usare variabili di stato all'utente di memorizzare e recuperare i dati in sessioni Joomla.

esempio dato variabile

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

ma posso anche archiviare e recuperare le variabili di sessione utilizzando JFactory/getSession.

ESEMPIO impostato variabile

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

domande

Qual è la differenza tra i due metodi? Quando dovrei usarne uno sull'altro?

risposta

8

In breve: non è una grande differenza ed è possibile utilizzare qualsiasi cosa ritenga giusto nel contesto. Attaccherei con JApplication/setUserState perché penso che il codice sia meglio di per sé.

La differenza reale:

Entrambi i metodi memorizzerà lo stato specificato nella sessione. JApplication/setUserState utilizzerà internamente JSession/set per memorizzare lo stato.

Ciò che JApplication/setUserState è diverso è che memorizzerà ogni coppia di valori chiave in un JRegistry. Così è pari a:

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

Allora, qual è il punto di utilizzare un JRegistry? È praticamente il JRegistryFormat fornito funzionalmente. Si può usare sia per analizzare e formattare lo stato:

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

E 'anche la pena sottolineare che l'utilizzo di JApplication/setUserState tuo stato finirà nello spazio dei nomi "default":

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

Grazie per la risposta dettagliata ! Sento di capire le differenze/somiglianze ora :) – TryHarder

Problemi correlati