2016-10-01 5 views
0

PHP로 사용자 정의 클래스가 있습니다. 클래스를 serialize하고 텍스트 파일에 저장하면 나중에 다른 PHP 파일에서이를 직렬화 할 수 없습니다. 나는 개체의 클래스 함수를 호출 할 때 나는 모두의 클래스를 포함 할문자열에서 문자열 직렬화 해제 PHP가 작동하지 않음

... 비 객체에 [functioname()] 멤버 함수에

전화 받기 PHP 파일.

PHP 파일 1 :

$myobject = new myclass(); 
$temp = serialize($myobject); 
file_put_contents('serializetest.txt', $temp); 

PHP 파일 2 :

$s = file_get_contents('serializetest.txt'); 
$newobject = unserialize($s); 

는 직렬화 된 클래스가 적절를 unserialize 이유를 몇 가지 이유가 있나요? 내가 객체를 생성하고 사용하는 경우

업데이트

그것은 내가 관련이없는 저장된 객체를 unserialize 수있는 주요 기능입니다. 학급에서 형사 소송을 찾습니다. 두 객체가 완전히 다른 경우에도 새로운 객체를 만들고 사용하면 저장된 객체를 비 직렬화 할 수 있습니다. 즉 아래 코드는 작동하지만 코드의 처음 3 줄을 제거하면 안됩니다.

$tempcase = new Expungement(); 
$tempcase->searchCase('4B02305986','Public',true,false); 
echo "Case Number 1: " . $tempcase->caseno; 

$s = file_get_contents('serializetest.txt'); 
echo "Serialized Data: " . $s; 
$newcase = unserialize($s); 
echo "Case Number 2: " . $newcase->caseno; 
+1

클래스 정의가 파일 2에 있습니까? 파일 2는 여전히'myclass'가 무엇인지 알 필요가 있습니다. – Devon

+0

클래스 파일을 두 페이지의 상단에 포함시킵니다. include_once 'myclass.php' – user3157910

+0

'$ newobject'를 덤프하여 포함 된 것을 확인하려고 했습니까? – Devon

답변

0

"serializetest.txt"의 내용과 $ s의 값을 확인 했습니까? 파일 1과 파일 2는 같은 디렉토리에 있습니까? 많은 상호 참조가있는 "복잡한"클래스가있는 경우 unserialize가 제대로 작동하지 않을 수 있습니다.

+0

예 serialize.txt의 내용이 정상입니다. 내 수업에는 다른 여러 수업이 있지만 모두 mainclass.php에 포함되어 있습니다. 파일 2에서 이렇게하면 작동하는 것으로 나타났습니다. '$ temp = new myObject(); $ temp-> runmainfunction(); $ s = file_get_contents ('serializetest.txt'); $ newobject = unserialize ($ s); ' 의미가 있습니까? 그 전에 다른 관련 객체를 만들고 사용할 때 다른 클래스를 호출합니까? – user3157910

+0

file_get_content 이후 $ s의 내용을 확인할 수 있습니까? –

+0

만약 내가 $ s를 되풀이한다면 그것은 에코가 올바른 데이터임을 나타낸다. mainclass.php에 여러 개의 사용자 정의 클래스가 포함되어 있습니다. 다른 작은 사용자 정의 클래스를 파일 2에 개별적으로 포함시켜야합니까, 아니면 'mainclass.php'에 자동으로 사용할 파일을 포함시킬 것입니까? – user3157910

관련 문제