簡體   English   中英

如何在不聲明任何變量的情況下訪問symfony會話? (Symfony組件與舊版代碼用例進行交互)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM