如果此函式返回 false,似乎會導致在錯誤日誌中發出「session_start(): Failed to read session data: user」。這似乎也會產生連鎖效應,導致 write() 方法未被呼叫。
因此,返回 false 似乎僅用於指示錯誤狀態。要指示沒有現有的工作階段,但可以建立一個新的工作階段,返回空字串似乎是可行的方法。
(PHP 5 >= 5.4.0, PHP 7, PHP 8)
SessionHandlerInterface::read — 讀取工作階段資料
從工作階段儲存區讀取工作階段資料,並返回結果。在工作階段開始或呼叫 session_start() 後立即呼叫。請注意,在此方法被呼叫之前,會先呼叫 SessionHandlerInterface::open()。
此方法由 PHP 本身在工作階段啟動時呼叫。此方法應透過提供的 session ID 從儲存區擷取工作階段資料。此方法返回的字串必須與最初傳遞給 SessionHandlerInterface::write() 的序列化格式相同。如果找不到記錄,則返回 false
。
此方法返回的資料將由 PHP 使用 session.serialize_handler 中指定的反序列化方法在內部解碼。產生的資料將用於填充 $_SESSION 超全域變數。
請注意,序列化機制與 unserialize() 不同,可透過 session_decode() 進行存取。
id
工作階段 ID。
返回已讀取資料的編碼字串。如果未讀取任何內容,則必須返回 false
。請注意,此值會在內部返回給 PHP 進行處理。