$_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() 되기 때문이다!
'Computer' 카테고리의 다른 글
[Ubuntu] 유저에게 sudo 권한 주기. (0) | 2015.03.13 |
---|---|
Advices for applying machine learning. (0) | 2015.03.11 |
[Fedora] SELinux때문에 LDAP 접속이 안될 경우 (0) | 2015.02.10 |
[sed] sed로 파일 내용을 수정할 때 주의점 (0) | 2015.02.02 |
[ALGOSPOT] CLEARSKYPROJECT (0) | 2015.01.14 |