php - 我什么时候应该在 Joomla 中使用 setUserState?

标签 php joomla session-variables session-state joomla2.5

详情

我可以使用用户状态变量在 Joomla session 中存储和检索数据。

示例设置变量

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

但我也可以使用 JFactory/getSession 在 session 中存储和检索变量。

示例设置变量

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

问题

这两种方法有什么区别? 我什么时候应该使用一个而不是另一个?

最佳答案

简而言之:区别不大,您可以根据上下文使用任何感觉合适的内容。我会坚持使用 JApplication/setUserState,因为我认为该代码更好地 self 解释。

实际区别:

这两种方法都会在 session 中存储指定的状态。 JApplication/setUserState 实际上会在内部使用 JSession/set 来存储状态。

JApplication/setUserState 的不同之处在于它将每个键值对存储在 JRegistry 中。 .所以它等于:

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

那么使用 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)

关于php - 我什么时候应该在 Joomla 中使用 setUserState?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13196219/

相关文章:

php - 如何通过 URL 获取多个数组到 iOS 应用程序

php - 如何在 foreach 中使用(或组合)多个数组

javascript - 使用 PHP_SELF 返回单个响应

php - Joomla 数据库导入不起作用

joomla:如何做子菜单

java - 无法从对象转换为 boolean 值

php - Laravel - 在routes.php中使用 'where'来查询模型

css - Joomla 3 全局配置缺少 css

vb.net - 从 vb.net 中的 ID 字符串查找单选按钮控件

c# - session 在每次请求时开始和结束,每次都使用相同的 session ID