중화사전망 - 구한말 사전 - PHP 직렬화란 정확히 무엇인가요?
PHP 직렬화란 정확히 무엇인가요?
PHP에서는 직렬화를 사용하여 유형과 구조를 잃지 않고 PHP 값을 저장하거나 전송합니다. 이 문서에서는 PHP 직렬화를 위한 네 가지 솔루션에 대해 설명합니다.
직렬화는 변수를 저장하거나 전송할 수 있는 문자열로 변환하는 프로세스입니다. 그런 다음 문자열은 사용하기 위해 원래 변수로 변환됩니다. 이 두 프로세스가 결합되어 데이터를 쉽게 저장하고 전송하므로 프로그램의 유지 관리가 더욱 쉬워집니다.
1. PHP 직렬화란 무엇입니까? 직렬화 및 역직렬화 함수
이 두 가지는 PHP에서 데이터를 직렬화 및 역직렬화하는 데 일반적으로 사용되는 함수입니다.
$a = array('a' => 'Apple' ,'b' => 'banana' , 'c' => 'Coconut');
//시퀀스 배열 $s = serialize($a);echo $s;//출력 결과: a:3:{s:1:"a";s:5:"Apple";s:1:"b";s : 6:"바나나";s:1:"c";s:7:"코코넛";}
echo ''
//역직렬화 $o = 직렬화 해제($s );
print_r($o);
배열 값에 큰따옴표, 작은따옴표 또는 콜론과 같은 문자가 포함되어 있으면 역직렬화되어 문제가 발생할 수 있습니다. 이 문제를 극복하기 위한 깔끔한 방법은 base64_encode 및 base64_decode를 사용하는 것입니다.
$obj = array();//직렬화 $s = base64_encode(serialize($obj)); //역직렬화 $original = unserialize(base64_decode($s));
그러나 base64 인코딩을 사용하면 문자열 길이가 늘어납니다. 이 문제를 극복하기 위해 gzcompress와 함께 사용할 수 있습니다.
//객체 직렬화를 위한 함수 정의
function my_serialize( $obj ) { return base64_encode(gzcompress(serialize($obj))) }
//Deserialize function my_unserialize($txt) { return unserialize(gzuncompress(base64_decode($txt))) }
2. PHP 직렬화란 무엇인가요?
JSON 사용 직렬화 및 역직렬화를 위한 형식은 좋은 선택입니다.
json_encode 및 json_decode 형식 출력을 사용하면 직렬화 및 역직렬화 형식보다 훨씬 빠릅니다.
JSON 형식을 읽을 수 있습니다.
JSON 형식은 직렬화보다 더 작은 데이터 결과를 반환합니다.
JSON 형식은 개방적이고 이식 가능합니다. 다른 언어도 사용할 수 있습니다.
$a = array('a' => 'Apple' ,'b' => 'banana' , 'c' => 'Coconut');
//시퀀스 배열 $s = json_encode($a);echo $s;//출력 결과: {"a":"Apple","b":"banana","c":"Coconut"}
echo '
//Deserialization $o = json_decode($s);
위의 예에서 json_encode 출력 길이는 분명히 이전 예의 직렬화 출력 길이보다 깁니다. .
[페이지]
3. PHP 직렬화란 무엇입니까? var_export 및 eval
var_export 함수는 문자열을 문자열로 출력하고 이를 역직렬화합니다. 원래 변수의 내용.
$a = array('a' => 'Apple' ,'b' => 'banana' , 'c' => 'Coconut');
//시퀀스 Array $s = var_export($a, true);echo $s;//출력 결과: array ( 'a' => 'Apple', 'b' => 'banana', 'c' => 'Coconut' , )
echo '
';
//역직렬화 eval('$my_var=' . $s . ';'); p>
print_r($my_var);
4. PHP 직렬화란 무엇입니까? wddx_serialize_value 및 wddx deserialize
wddx_serialize_value 함수는 배열 변수를 직렬화하고 이를 XML 문자열 형식 출력으로 변환할 수 있습니다.
$a = array('a' => 'Apple' ,'b' => 'banana' , 'c' => 'Coconut');
//시퀀스 Array $s = wddx_serialize_value($a);echo $s;
//출력 결과(출력 문자열의 소스 코드 보기): ApplebananaCoconut
echo '
';
//역직렬화 $o = wddx_deserialize($s);
print_r($o);//출력 결과: 배열( [a] => Apple [b] => 바나나 1 => 코코넛 )
XML 태그에 문자가 많기 때문에 이 형식의 직렬화는 여전히 많은 공간을 차지한다는 것을 알 수 있습니다.
결론
위의 함수는 모두 배열변수를 직렬화할 때 정상적으로 실행될 수 있지만, 객체에 적용할 때는 다릅니다. 예를 들어 json_encode 직렬화된 객체는 실패합니다. 객체를 역직렬화할 때 unserialize와 eval의 효과는 서로 다릅니다.
이 기사 "PHP 직렬화란 무엇입니까?" 이 지식 포인트가 바로 그 사용법에 대해 알아야 할 것입니다." 글로벌 온라인 스쿨의 편집자는 특정 프로그래밍 소프트웨어가 인기 있는 데에는 확실한 이유가 있다고 항상 믿어 왔습니다. 사람들을 끌어들이는 첫 번째 것은 그 기능입니다. 글로벌 온라인 학교의 편집자는 학교 PHP를 배우는데 행운이 있기를 바랍니다. PHP에 대해 더 알고 싶다면 이 사이트의 다른 기사를 클릭하여 배울 수도 있습니다.