我正在致力於UserSession
服務,代碼如下。isset檢查應該在依賴會話有效的服務中完成嗎?
我的問題是,是否有任何需要在get_id
方法內執行isset
測試,還是應該由調用代碼(在我的情況下是控制器)來確保會話是活動的?
如果沒有設置會話,失敗會導致註銷,但我不禁想到,檢查用戶會話的有效性不應該在此服務中完成,因爲使用無論如何,這項服務需要有效的用戶會話。
我最終不得不在每次吸氣時都這樣做。
<?php
namespace \App\Services;
class UserSession {
private $session;
public function __construct()
{
$this->session = (object) $_SESSION;
}
public function get_id()
{
if(!isset($this->session->user->id))
return false;
return $this->session->user->id;
}
}
有什麼建議嗎?
我想也許是一種方法is_valid()
,返回true
或false
也許是需要的。這樣,在調用任何獲取器之前,可以檢查會話的使用。
我沒有看到任何問題。把它放在get_id()中比在誰知道有多少地方更好。許多PHP方法在失敗時返回* something *或false。這並不罕見。以''curl_exec'](http://php.net/manual/en/function.curl-exec.php)爲例,設置'CURLOPT_RETURNTRANSFER'作爲選項。它將返回一個字符串(成功時),如果失敗則返回false。 – Andrew
在我看來,複查總是比較好。但是,如果沒有設置「$ this-> session-> user-> id」,則無法以任何方式調用此腳本。那麼,這是沒有必要的。 –