2010-01-11 6 views
5

저는 OOP을 처음 사용하고 제 첫 수업 중 하나를 쓰고 있습니다. 나는 보험 중개인을 위해 일하며 클래스를 사용하여 견적에 대한 정보를 저장하고 객체를 세션 변수로 저장하려고합니다. 불완전 클래스 이름을 보여주는 왜세션 변수에 PHP 객체 저장

sessionName   

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

사람이 말해 줄 수 :

것은 내가 세션 변수를 볼 때, 나는 얻을입니까?

답변

5

session_start()가 호출되기 전에 클래스 정의가 존재하는지 확인하십시오.

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

또는 http://docs.php.net/function.unserialize에 설명 된대로 클래스 정의를로드 할 것 unserialize_callback_func을 설정합니다.

편집 : 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

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(); 

나는 또한 페이지가 호출 표시하는 것을 확인했다 객체는 에러를 일으키는 것처럼 보였기 때문에 serialize 함수를 사용하지 않았습니다.

0

나는이

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