假设我有一行,不在任何地方的类中,并且我知道会话有一个名为"foo"的变量,我想输出它。
在标准PHP中,我可以简单地...
echo $_SESSION["foo"];
那么我需要做什么才能等效使用symfony会话呢? 我不在一个函数中,不在类中,没有将任何变量从 A 点传递到 B 点,没有$request变量,没有$session。我只想从会话中输出"foo"。我该怎么做?
这是在一个遗留代码库中,其中包含相当多的程序编写代码。
选项 1:由于您使用的是 PHP,您仍然可以使用$_SESSION
超级全局来访问会话变量。
选项2:否则你可以使用Symfony的Session类,文档在这里:https://symfony.com/doc/current/components/http_foundation/sessions.html
选项3:创建一个抽象Symfony会话的帮助程序。在composer.json
文件中,在autoload
部分添加files
定义:
{
"autoload": {
"files": ["src/helpers/SessionsHelper.php"]
}
}
附言不要忘记composer dump-autoload
.
现在,在SessionsHelper
中,您可以创建全局可访问的函数:
use SymfonyComponentHttpFoundationSessionSession;
/**
* Retrieve a value from Session
*
* @param $key [String]
* @return [String]
*/
function getSessionValue($key)
$session = new Session();
return $session->get($key);
}
现在,您可以在代码中的任何位置使用getSessionValue
:
echo getSessionValue('user_id');