총 결 대비 phop 의 다양한 직렬 화
직렬 화 는 대상 상 태 를 유지 하거나 전송 가능 한 형식 으로 바 꾸 는 과정 이다.직렬 화 와 상대 적 으로 반 직렬 화 는 흐름 을 대상 으로 전환한다.이 두 과정 을 결합 하면 데 이 터 를 쉽게 저장 하고 전송 할 수 있다.
대상 의 상태 정 보 를 저장 하거나 전송 할 수 있 는 창 으로 변환 하 는 과정.직렬 화 기간 에 대상 은 현재 상 태 를 임시 또는 영구적 저장 소 에 기록 합 니 다.이후 저장 소 에서 읽 거나 반 직렬 화 대상 의 상 태 를 통 해 이 대상 을 다시 만 들 수 있 습 니 다.
일반적으로 대상 인 스 턴 스 의 모든 필드 가 직렬 화 되 는데 이것 은 데이터 가 인 스 턴 스 의 직렬 화 데이터 로 표시 된다 는 것 을 의미한다.이 형식 을 설명 할 수 있 는 코드 는 이 데이터 의 값 을 확인 할 수 있 으 며,이 구성원 의 접근 성에 의존 하지 않 을 수 있 습 니 다.이와 유사 하 게 반 직렬 화 는 직렬 화 된 표현 형식 에서 데 이 터 를 추출 하고 대상 상 태 를 직접 설정 하 는 것 도 접근 가능 한 규칙 과 무관 하 다.중요 한 보안 데 이 터 를 포함 할 수 있 는 모든 대상 에 대해 가능 하 다 면 이 대상 을 직렬 화 할 수 없 게 해 야 한다.직렬 화 할 수 있 는 중요 한 데 이 터 를 저장 하기 위해 특정 필드 를 만들어 보 세 요.이 를 실현 할 수 없다 면 이 데 이 터 는 직렬 화 권한 을 가 진 코드 에 공개 되 고 악성 코드 가 이 권한 을 얻 지 않도록 해 야 한다.
serialize 와 unserialize 함수
이 두 가 지 는 직렬 화 와 반 직렬 화 PHP 에서 데 이 터 를 자주 사용 하 는 함수 입 니 다.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:"banana";s:1:"c";s:7:"Coconut";}
echo '<br /><br />';
//
$o = unserialize($s);
print_r($o);
// Array ( [a] => Apple [b] => banana [c] => Coconut )
?>
배열 값 이 작은 따옴표,작은 따옴표,짝 퉁 등 문 자 를 포함 할 때 반 직렬 화 되면 문제 가 발생 할 수 있 습 니 다.이 문 제 를 극복 하기 위해 교묘 한 기 교 는 사용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)));
}
//
function my_unserialize($txt)
{
return unserialize(gzuncompress(base64_decode($txt)));
}
json_encode 와 jsondecodeJSON 형식의 서열 화 와 반 서열 화 를 사용 하 는 것 은 좋 은 선택 이다.
사용
json_encode
과json_decode
형식 으로 출력serialize
과unserialize
형식 이 훨씬 빠르다.(1)
JSON
형식 은 읽 을 수 있다.(2)
JSON
형식 은serialize
반환 데이터 결과 보다 작다.(3)
JSON
형식 은 개방 적 이 고 이식 가능 하 다.다른 언어 도 사용 할 수 있다.
$a = array('a' => 'Apple' ,'b' => 'banana' , 'c' => 'Coconut');
//
$s = json_encode($a);
echo $s;
// :{"a":"Apple","b":"banana","c":"Coconut"}
echo '<br /><br />';
//
$o = json_decode($s);
위의 예 에서json_encode
수출 길 이 는 이전 예 에서serialize
수출 길이 보다 현저히 짧다.주의해 야 할 것 은json_encode
대상 을 서열 화 할 수 없다 는 것 이다.총결산
이상 이 이 글 의 전부 입 니 다.여러분 이 좋아 하고 도움 을 주 셨 으 면 좋 겠 습 니 다.문제 가 있 으 면 댓 글로 토론 할 수 있다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Laravel - 변환된 유효성 검사 규칙으로 API 요청 제공동적 콘텐츠를 위해 API를 통해 Laravel CMS에 연결하는 모바일 앱(또는 웹사이트) 구축을 고려하십시오. 이제 앱은 CMS에서 번역된 콘텐츠를 받을 것으로 예상되는 다국어 앱이 될 수 있습니다. 일반적으로 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.