作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
详情
我可以使用用户状态变量在 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/
详情 我可以使用用户状态变量在 Joomla session 中存储和检索数据。 示例设置变量 $app =& JFactory::getApplication(); $app->setUserSta
我是一名优秀的程序员,十分优秀!