简而言之:这没什么大不了的,您可以在上下文中使用任何感觉合适的东西。我会坚持下去, JApplication/setUserState
因为我认为代码更好地自我解释。
实际区别:
这两种方法都将在会话中存储指定的状态。JApplication/setUserState
实际上将在内部用于JSession/set
存储状态。
JApplication/setUserState
不同之处在于它将每个键值对存储在JRegistry中。所以它等于:
$session = JFactory::getSession();
$registry = $session->get('registry');
$registry->set('myvar', $myvarvalue);
那么使用 a 有什么意义JRegistry
呢?这几乎是提供的功能JRegistryFormat
。您可以使用它来解析和格式化状态:
$session = JFactory::getSession();
$registry = $session->get('registry');
$json = $registry->toString('JSON');
$xml = $registry->toString('XML');
还值得指出的是,使用JApplication/setUserState
你的状态最终会在“默认”命名空间中:
$app = JFactory::getApplication();
$app->setUserState( 'myvar', $myvarvalue );
// $_SESSION['default']['registry']->set('myvar', $myvarvalue)