2011-02-28 4 views
2

그래서 정의에 따라 클래스의 비공개 숫자는 직렬화 될 때 클래스 이름이 접두사로 사용됩니다. 이 문제는 나를 위해 직렬화 할 수 싶습니다/저장/unserialize 정확한 개체를, PHP는 무엇입니까 나에게 다른 varialbe classname + privateName에 대한 variableName 줄 것입니다.php는 전용 멤버와 함께 비동기 화합니다.

개인 회원을 쉽게 unserialize 할 수있는 방법이 있습니까?

덕분에, 당신은 당신의 클래스 inmplements Serializable 인터페이스를 제외하고 직렬화의 내부에 대해 걱정할 필요가 또는 __wakeup and __sleep 방법을 가지고하지 않는

+1

이 정상적으로에게 예를 들어

unserialize하면 자동으로 실행됩니다. 오류가 발생한 예제를 제공해 줄 수 있습니까? – Hamish

답변

2

.

는 "FooSecret"와 "비밀"사이의 잠재적 인 이름 충돌이있어 비록
class Foo { 
    private $Secret = "Private (init)"; 

    public $FooSecret = "Public (init)"; 

    function setSecret($secret) { 
     $this->Secret = $secret; 
    } 
    function getSecret() { 
     return $this->Secret; 
    } 
} 

$bar = new Foo(); 
$bar->setSecret("Private (after serialize/unserialize)"); 
$bar->FooSecret = "Public (after serialize/unserialize)"; 
var_dump(unserialize(serialize($bar))); 

은, PHP는 무엇을 알고 당신을 제공합니다 :

object(Foo)#2 (2) { 
    ["Secret":"Foo":private]=> 
    string(39) "Private (after serialize/unserialize)" 
    ["FooSecret"]=> 
    string(38) "Public (after serialize/unserialize)" 
}