>  기사  >  백엔드 개발  >  비공개 멤버가 포함된 PHP 개체를 JSON으로 어떻게 인코딩할 수 있나요?

비공개 멤버가 포함된 PHP 개체를 JSON으로 어떻게 인코딩할 수 있나요?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-24 18:25:121003검색

How Can I Encode PHP Objects with Private Members to JSON?

JSON을 사용하여 비공개 멤버로 PHP 객체 인코딩

PHP 객체를 JSON으로 인코딩할 때 객체에 비공개 멤버가 포함되어 있으면 문제가 발생할 수 있습니다. 기본적으로 비공개 멤버는 클래스 외부에서 액세스할 수 없습니다.

함수 및 비공개 멤버 인코딩

제공된 코드 조각은 객체의 속성을 반복하는 사용자 정의 인코딩 함수를 보여줍니다. $json 객체에 저장합니다. 그러나 객체에 중첩된 객체가 포함된 경우 이 접근 방식에는 제한이 있습니다.

JsonSerialize 인터페이스 구현

이 문제를 극복하려면 JsonSerialize 인터페이스를 구현하는 것이 좋습니다. 이 인터페이스는 직렬화되는 데이터를 제어할 수 있는 jsonSerialize라는 하나의 메서드를 정의합니다.

직렬화 사용자 정의

jsonSerialize를 구현하면 어떤 속성이 직렬화되어야 하는지 지정할 수 있습니다. JSON 표현에 포함됩니다. 다음 코드는 이 인터페이스를 구현하고 원하는 데이터를 반환하는 방법을 보여줍니다.

class Item implements \JsonSerializable {
    private $var;
    private $var1;
    private $var2;

    public function __construct() {
        // ...
    }

    public function jsonSerialize() {
        $vars = get_object_vars($this);

        return $vars;
    }
}

json_encode 사용

jsonSerialize 메서드가 구현되면 json_encode는 jsonSerialize 구현에 지정된 비공개 멤버를 포함한 객체입니다.

위 내용은 비공개 멤버가 포함된 PHP 개체를 JSON으로 어떻게 인코딩할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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