2010-01-11 102 views
5

我是OOP的新手,正在寫我的第一個類。我爲一家保險經紀人工作,並試圖使用一個Class存儲關於報價的事情,並將Object存儲爲會話變量。在會話變量中存儲PHP對象

的是,當我查看會話變量,我得到:

sessionName   

__PHP_Incomplete_Class Object 
(
    [__PHP_Incomplete_Class_Name] => myClass 
    [brokerId] => 

誰能告訴我,爲什麼它的顯示不完整的類名?

回答

5

確保在調用session_start()之前存在類定義,例如,

require_once 'class.MyClass.php'; 
session_start(); 

或設置unserialize_callback_func,將試圖作爲http://docs.php.net/function.unserialize描述加載類定義。

編輯:這也可以通過spl_autoload_register()完成。例如。

spl_autoload_register(function($name) { 
    // only a demo ...this might be insecure ;-) 
    require_once 'class.'.$name.'.php'; 
}); 
session_start(); 
echo '<pre>'; 
var_dump($_SESSION); 
echo '</pre>'; 
+0

這是正確的,忘了我已經回答:) – soulmerge 2010-01-11 14:41:19

1

我設法通過自己解決這一切,不知道如何。

我保證顯示的值頁的結構類似:

require_once("Class.php"); 
session_start(); 

$_SESSION['myObject']->printVariables(); 

這構造對象的頁面是這樣的:

# Include the class 
require_once($_SERVER['DOCUMENT_ROOT'] . "/Class.php"); 

# Instantiate a new policy 
$_SESSION['myObject'] = new quote('54'); 
$_SESSION['myObject']->printVariables(); 

我還相信,該頁面顯示調用對象沒有使用任何序列化函數,因爲它們似乎只會導致錯誤。

0

我用這

if (!is_object($_SESSION)) $_SESSION = new ArrayObject();