gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 12:35:01 26 4
gpt4 key购买 nike

详情

我可以使用用户状态变量在 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com