php - 在 PHP 中引用 session 变量

标签 php session

假设我正在存储一个名为 $_SESSION["logged_in_user"] 的数组或对象。

如果我需要在整个脚本中反复引用它,以下哪项是“最佳实践”?

  • 每次都使用 $_SESSION["logged_in_user"](即 $_SESSION["logged_in_user"]["first_name"])?

  • 将对象复制到一个新变量中,如 $logged_in = $_SESSION["logged_in_user"]

  • 创建对 session 变量的引用,如 $logged_in =& $_SESSION["logged_in_user"]

我可能想得太多了,但我主要担心的是脚本开销和可读性。我不确定重复引用 session 变量是否比引用内联声明的变量慢。我也不知道将 session 变量复制到“常规”变量中是否会增加不必要的开销。我确实喜欢 $logged_in["first_name"] 优于 $_SESSION["logged_in_user"]["first_name"] 的可读性。

那么这里有最佳实践吗,还是真的无关紧要?

最佳答案

$_SESSION 是一个特殊的 PHP 超全局数组。因此,从技术上讲,您可以随时通过使用它来引用它:

$_SESSION['logged_in_user']

然而,它也很特别,因为它可以改变。以下示例使其可见:

$alias =& $_SESSION;
session_start();
$alias['foo'] = 'bar';

此代码不会设置 $_SESSION['foo']$alias 指向先前的 $_SESSIONsession_start() 已创建一个新 session 。

如果您了解这些注意事项,您自然可以创建自己的 $_SESSION 抽象。

关于php - 在 PHP 中引用 session 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8113494/

相关文章:

session - 如何禁止 Symfony 将 _sess 文件写入我的/tmp 目录

javascript - AngularJS 中 Session Storage、Local Storage 和 Cookies 的区别

c# - ASP.NET:为无 cookie session 实现 ISessionIDManager?

php - 使用 JMSSerializer 序列化的 Symfony 4 FOSRestBundle

php - 如何在 PHP 中将两个字符串组合在一起?

PHP,你为什么要转义我的引号?

php - `docker-php-ext-install bz2` 失败(在 php :7. 0-fpm-alpine 上,使用 alpine 3.4)

php - 您是否需要将 mysqli_real_escape_string 用于加密值?

python - Flask-Login login_manager.session_protection=strong 不会重定向到登录页面

用于计算访问次数和重定向的 PHP Session if (session ['visits' ]=1)