我陷入了令人沮喪的車轍。我有一個使用單例對象的認證系統(從頭構建)。PHP Singleton對象消失了嗎?
單件對象基本上管理會話的安全性,並具有防止會話劫持和其他惡意活動的功能。
這些函數依賴於成員數據。
現在的問題是,PHP似乎放棄這些單身人士對象,每次用戶刷新或移動到一個新的頁面。
下面是會話類的原型:
class session extends login{
public $sessionid;
private $fingerprint;
public static $temp=0;
public static $s_instance = NULL;
public static function s_getinstance(){
if (!isset(session::$s_instance) || !isset(session::$sessionid)) {
$c = __CLASS__;
if(isset(session::$s_instance)) {
session::$s_instance = 0;
}
session::$s_instance = new $c;
self::regenerate_id_name();
self::$temp +=1;
}
return session::$s_instance;
}
}
最後一個函數檢查數據成員($ s_insntance),如果是NULL它創建一個對象,並把它扔了回來管理活動相關的沿創建一個新的會話。
如果數據成員不爲空,它將返回現有對象。
或者在理論上,這是它應該做的。但是,每次訪問新頁面並調用s_getinstance函數時,都會嘗試創建一個全新的對象,並且舊數據丟失。請幫我在這裏。
加些適當的縮進,使你的代碼可讀性? – ThiefMaster
*(相關)* [誰需要單身人士](http://stackoverflow.com/questions/4595964/who-needs-singletons/4596323#4596323)和[清潔代碼會談](http://www.youtube。 com/watch?v = -FRm3VPhseI) – Gordon
'public static $ s_instance = NULL;''您的實例可以從**任何地方改變**! –