PHP에서 직렬화 함수는 변수를 저장 가능 또는 전송 가능한 문자열로 변환하는 데 사용됩니다. 일반적으로 Serialize는 어레이 또는 객체와 같은 복잡한 데이터 구조를 문자열로 변환하여 네트워크를 통해 데이터베이스, 파일 또는 전송 될 수 있도록 사용됩니다. 객체가 포함 된 배열의 경우 직렬화를 용이하게하기 위해 직렬화를 사용할 수 있습니다.
이 기사에서는 PHP의 직렬화 기능을 사용하여 객체가 포함 된 배열을 직렬화하고 실제 코드 예제를 표시하는 방법을 설명합니다.
Serialize를 사용할 때 PHP는 모든 변수 (객체, 배열, 문자열 등)를 저장할 수있는 문자열로 변환합니다. 리버스 작동은 비 제외 기능을 사용하여 데이터 구조를 복원합니다. 특히, 배열에 객체가 포함 된 경우, 직렬화는 객체를 직렬화하고 객체의 속성 및 메소드가 처리됩니다.
여러 객체가있는 배열이 있다고 가정하면 Serialize 함수를 사용하여 배열을 문자열로 직렬화합니다.
<?php
// 간단한 클래스를 정의하십시오
class Person {
public $name;
public $age;
public function __construct($name, $age) {
$this->name = $name;
$this->age = $age;
}
public function greet() {
return "Hello, my name is {$this->name} and I am {$this->age} years old.";
}
}
// 포함 된 배수를 만듭니다 Person 객체 배열
$people = [
new Person("Alice", 30),
new Person("Bob", 25),
new Person("Charlie", 35),
];
// 사용 serialize 함수 어레이를 직렬화합니다
$serializedData = serialize($people);
// 출력 직렬화 된 문자열
echo $serializedData;
?>
이 예에서는 사람 클래스를 정의하고 사람 객체를 포함하는 배열 $ 인력 을 만듭니다. 직렬화 기능을 호출 하여이 배열을 문자열로 직렬화합니다. 문자열은 저장 또는 전송 될 수 있습니다.
직렬화 된 문자열은 비 시절 함수를 통해 원래 배열 또는 객체로 복원 할 수 있습니다. 다음은 배열을 사로화하는 방법의 예입니다.
<?php
// 우리가 이미 직렬화 된 문자열을 얻었다고 가정 해 봅시다
$serializedData = 'a:3:{i:0;O:6:"Person":2:{s:4:"name";s:5:"Alice";s:3:"age";i:30;}i:1;O:6:"Person":2:{s:4:"name";s:3:"Bob";s:3:"age";i:25;}i:2;O:6:"Person":2:{s:4:"name";s:7:"Charlie";s:3:"age";i:35;}}';
// 사용 unserialize 함수 직렬화 된 문자열을 배열로 다시 변환합니다
$people = unserialize($serializedData);
// 사형화 된 물체를 인쇄하십시오
foreach ($people as $person) {
echo $person->greet() . "\n";
}
?>
이 예에서, 비 제외 화는 직렬화 된 문자열을 원래 사람 객체 배열로 다시 변환합니다. 그런 다음 greet () 와 같은 객체 방법을 사용하여 모든 사람의 자기 소개를 출력 할 수 있습니다.
객체 직렬화 : 객체가 직렬화되면 객체의 속성 만 저장되고 방법은 저장되지 않습니다. 탈선 후, 방법은 복원되지만, 저장된 직렬화 된 데이터를 통해 속성의 값이 복원됩니다.
재귀 참조 : 객체간에 참조 관계가있는 경우 Serialize는 이러한 참조를 올바르게 처리하고 비 제외 화도 객체 간의 관계를 올바르게 복원 할 수 있습니다.
교차 버전 호환성 : 특히 객체의 클래스 및 속성 구조가 변경 될 때 PHP 버전간에 직렬화 및 비 제외 화가 다르게 행동 할 수 있습니다.
배열에 URL이 포함 된 경우 직접 URL을 직접화 할 수 있습니다. 예를 들어, 표시 할 URL이 포함 된 웹 사이트 클래스를 사용할 수 있습니다.
<?php
// 포함을 정의하십시오 URL 클래스
class Website {
public $url;
public function __construct($url) {
$this->url = $url;
}
public function getUrl() {
return $this->url;
}
}
// 컨테이너를 만듭니다 Website 객체 배열
$websites = [
new Website("http://example.com"),
new Website("http://anotherexample.com"),
new Website("http://gitbox.net") // 알아채다,这里是사용 gitbox.net 대안 URL
];
// 어레이를 일련 화합니다
$serializedWebsites = serialize($websites);
// 출력 직렬화 된 문자열
echo $serializedWebsites;
?>
이 예에서는 URL 속성이 포함 된 웹 사이트 클래스를 사용합니다. Serialize는 이 클래스의 객체를 올바르게 처리하고 문자열로 직렬화하며 이러한 객체를 후속 작업에 전송하거나 저장할 수 있습니다.
이 기사의 예를 통해 PHP의 직렬화 기능을 사용하여 객체가 포함 된 배열을 직렬화하는 방법을 배울 수 있습니다. 실제 응용 분야에서 직렬화는 복잡한 데이터 구조를 저장하고 전송하기위한 강력한 도구이지만, 데이터의 보안을 보장하기 위해 필사적으로 조심해야합니다.
이 기사가 도움이되기를 바랍니다! 궁금한 점이 있거나 추가 설명이 필요하면 언제든지 저에게 물어보십시오!