>  기사  >  백엔드 개발  >  PHP의 직렬화 및 역직렬화에 대한 심층적인 이해

PHP의 직렬화 및 역직렬화에 대한 심층적인 이해

迷茫
迷茫원래의
2017-03-26 11:05:201386검색

복잡한 데이터 유형을 문자열로 압축

serialize() 변수와 해당 값을 텍스트 형식으로 인코딩

unserialize() 원래 변수 복원

<span style="color: #800080">$stooges = <span style="color: #0000ff"><a href="http://www.php.cn/wiki/1041.html" target="_blank">array</a>(&#39;Moe&#39;,&#39;Larry&#39;,&#39;Curly&#39;);<br/><span style="color: #800080">$<a href="http://www.php.cn/wiki/165.html" target="_blank">new</a> = <span style="color: #008080">serialize(<span style="color: #800080">$stooges);<br/><span style="color: #008080"><a href="http://www.php.cn/wiki/1362.html" target="_blank">print</a>_r(<span style="color: #800080">$new);<span style="color: #0000ff"><a href="http://www.php.cn/wiki/1343.html" target="_blank">echo</a> "<br />";<br/><span style="color: #008080">print_r(<span style="color: #008080">unserialize(<span style="color: #800080">$new));</span></span></span></span></span></span></span></span></span></span></span>

결과: a:3:{i:0;s:3:"Moe";i:1;s:5:"Larry";i:2;s:5:"Curly";}

배열( [0] => Moe [1] => Larry [2] => Curly )

이러한 직렬화된 데이터가 URL에 배치되면 호출해야 합니다.

<span style="color: #800080">$shopping = <span style="color: #0000ff">array(&#39;Poppy seed bagel&#39; => 2,&#39;Plain Bagel&#39; =>1,&#39;Lox&#39; =>4);<br/><span style="color: #0000ff">echo &#39;<a href="next.php?cart=&#39;.<span style="color: #008080">urlencode(<span style="color: #008080">serialize(<span style="color: #800080">$shopping)).&#39;">next</a>&#39;;</span></span></span></span></span></span>

margic_quotes_gpc 및 Magic_quotes_runtime 구성 항목의 설정은 unserialize()에 전달되는 데이터에 영향을 미칩니다.

magic_quotes_gpc가 활성화된 경우 URL, POST 변수 및 쿠키에 전달된 데이터는 역직렬화 전에 스트립슬래시()로 처리되어야 합니다.

<span style="color: #800080">$new_cart = <span style="color: #008080">unserialize(<span style="color: #008080">stripslashes(<span style="color: #800080">$cart)); <span style="color: #008000">//<span style="color: #008000">如果magic_quotes_gpc开启<span style="color: #008000"><br/><span style="color: #800080">$new_cart = <span style="color: #008080">unserialize(<span style="color: #800080">$cart);</span></span></span></span></span></span></span></span></span></span>

magic_quotes_runtime이 활성화된 경우 직렬화된 데이터는 다음으로 처리되어야 합니다. 파일에 쓰기 전에 lashes()를 추가하고 파일을 읽기 전에 slashes()를 제거합니다.

//当对一个对象进行反序列化操作时,PHP会自动地调用其wakeUp()方法。这样就使得对象能够重新建立起序列化时未能保留的各种状态。例如:数据库连接等。

위 내용은 PHP의 직렬화 및 역직렬화에 대한 심층적인 이해의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.