[英]How to access a symfony session without declaring any variables? (Symfony components interacting with Legacy code use case)
假設我只有一行,而不是任何地方的類,並且我知道該會話具有一個要輸出的名為“ 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"]
}
}
PS別忘了composer dump-autoload
。
現在,在SessionsHelper
內部,您可以創建可全局訪問的函數:
use Symfony\Component\HttpFoundation\Session\Session;
/**
* 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');
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.