$_SESSION에 그냥 string을 저장하는 것은 쉽다.

$_SESSION['var_name'] = "value"; 로 하면 되니까.

하지만 class의 경우에는 이게 쉽지 않다 -_-;

$_SESSION['var_name'] = new MyClass();

라고 하면 저장이 잘 된것 같아보이지만.. 새로고침을 하고 var_dump($_SESSION['var_name]);를 해보면?

Case 1) __PHP_Incomplete_Class Name

          -> Class의 정의를 session_start() 하기 전에 포함시킨다(include를 하든 뭘 하든).

Case 2) null

          -> class MyClass implements Serializable { /* ... */ public function serialize(){/*...*/} public function unserialize($data){/*...*/} }

             처럼 Serializable 를 상속한 다음, [un]serialize 메소드를 구현한다 (좋은 링크).

(주의: 케이스를 나눠놓았지만 사실 둘 다 해야합니다!)

왜 이래야 하냐면, $_SESSION 안의 Object는 자동으로 각 페이지가 끝날 때 serialize()되어 세션에 저장되고, 각 페이지가 로드될 때 다시 unserialize() 되기 때문이다!