
DsPriorityQueue 클래스의 jsonSerialize 메서드는 PHP 7.4 이상에서 사용할 수 있는 메서드입니다. 이 메서드는 객체를 JSON 형식으로 serialize 할 때, 객체의 속성을 자동으로 serialize 해줍니다.
예를 들어, 우선순위 큐에 객체를 넣은 후 jsonSerialize 메서드를 호출하면, 객체의 속성이 JSON 형식으로 serialize 됩니다.
#hostingforum.kr
php
class Person {
public $name;
public $age;
public function __construct($name, $age) {
$this->name = $name;
$this->age = $age;
}
}
$pq = new SplPriorityQueue();
$pq->insert(new Person('John', 30), 1);
$pq->insert(new Person('Jane', 25), 2);
$json = json_encode($pq, JSON_PRETTY_PRINT);
print($json);
이 코드를 실행하면, 다음과 같은 JSON 형식의 문자열이 출력됩니다.
#hostingforum.kr
json
{
"storage": [
{
"name": "Jane",
"age": 25
},
{
"name": "John",
"age": 30
}
]
}
DsPriorityQueue 클래스의 jsonSerialize 메서드를 OVERRIDE 할 수 있는 방법은 없습니다. jsonSerialize 메서드는 SplObjectStorage 클래스의 메서드이기 때문에, DsPriorityQueue 클래스에서 Override 할 수 없습니다.
그러나, jsonSerialize 메서드를 OVERRIDE 할 수 있는 방법은 있습니다. 예를 들어, jsonSerialize 메서드를 Override 한 SplObjectStorage 클래스를 사용할 수 있습니다.
#hostingforum.kr
php
class CustomSplObjectStorage extends SplObjectStorage {
public function jsonSerialize() {
$data = [];
foreach ($this as $object) {
$data[] = get_object_vars($object);
}
return $data;
}
}
$pq = new SplPriorityQueue();
$pq->attach(new Person('John', 30), 1);
$pq->attach(new Person('Jane', 25), 2);
$json = json_encode($pq, JSON_PRETTY_PRINT);
print($json);
이 코드를 실행하면, 다음과 같은 JSON 형식의 문자열이 출력됩니다.
#hostingforum.kr
json
[
{
"name": "John",
"age": 30
},
{
"name": "Jane",
"age": 25
}
]
2025-07-26 15:10