당신이 상상할 수 있듯이,이 접근법은 빠르게 번거롭게됩니다. 응용 프로그램 전체 에이 배열 코드를 복제해야 할뿐만 아니라 더 많은 변경 사항이 필연적으로 들어올 때 모든 인스턴스를 업데이트해야합니다.하지만 다른 방법이있어 이러한 문제 중 일부를 무효화하는 데 도움이 될 것입니다.
.
나쁜가 지금 좋은
PHP의 JSonsonserializable 인터페이스는 주로 객체의 JSON 표현을 사용자 정의하는 데 사용됩니다. 객체가 json_encode () 함수로 전달되면 jsonserializable 인터페이스를 구현하면 jsonserialize () 메소드가 호출되어 객체가 직렬화 방법을 지시 할 수 있습니다. 이것은 JSON 출력에 대한 높은 수준의 제어를 제공하므로 복잡한 데이터 구조를 쉽게 관리하거나 데이터를 인코딩하기 전에 데이터에 대한 변환을 수행 할 수 있습니다. jsonserialize () 메소드 내에서 예외가 발생하면 json_encode ()에 의해 잡히지 않습니다. 대신 json_encode ()는 false를 반환하고 예외는 별도로 잡히고 처리해야합니다. jsonserialize () 내에서 예외를 처리하려면 메소드 자체 내에서 트리 캐치 블록을 사용할 수있어 예외를 관리하고 직렬화를 위해 유효한 데이터 구조를 반환 할 수 있습니다. ? <span><span><?php
</span></span><span>
</span><span><span>class Customer
</span></span><span><span>{
</span></span><span>
</span><span> <span>private $email = null;
</span></span><span> <span>private $name = null;
</span></span><span>
</span><span> <span>public function __construct($email, $name)
</span></span><span> <span>{
</span></span><span> <span>$this->email = $email;
</span></span><span> <span>$this->name = $name;
</span></span><span> <span>}
</span></span><span>
</span><span> <span>public function getName()
</span></span><span> <span>{
</span></span><span> <span>return $this->name;
</span></span><span> <span>}
</span></span><span>
</span><span> <span>public function getEmail()
</span></span><span> <span>{
</span></span><span> <span>return $this->email;
</span></span><span> <span>}
</span></span><span><span>}
</span></span><span>
</span><span><span>$customer = new Customer('customer@sitepoint.com', 'Joe');
</span></span><span>
</span><span><span>$data = [
</span></span><span> <span>'customer' => [
</span></span><span> <span>'email' => $customer->getEmail(),
</span></span><span> <span>'name' => $customer->getName()
</span></span><span> <span>]
</span></span><span><span>];
</span></span><span>
</span><span><span>echo json_encode($data);</span></span>
jsonserialize 방법에서 우리는 다른 예제와 마찬가지로 객체 데이터의 배열을 구성하고 반환합니다. 다시 한 번 변경되면이 하나의 메소드를 업데이트 할 수 있습니다. jsonserialize 메소드가 배열을 반환한다는 것을 알 수 있습니다. 요약
이 간단한 구현을 통해 복제를 제거하고 유지 보수량을 줄이고 버그 도입 가능성을 줄였습니다. 또한 코드를 사용하여 다른 사람이 jsonserializable 인스턴스인지 확인하여 객체의 기능을 인코딩 할 수있는 능력을 테스트하기 위해 다른 사람에게 사소하게 만들었습니다.
개인 속성과 함께 jsonserializable 인터페이스를 사용할 수 있습니까?
예, 개인 속성과 함께 jsonsonializable 인터페이스를 사용할 수 있습니다. jsonserialize () 메소드는 객체의 개인 및 보호 특성에 액세스하여 직렬화를 위해 반환 된 데이터에이를 포함시킬 수 있습니다. 이것은 객체의 내부 상태를 JSON으로 인코딩 할 때 유용 할 수 있지만, 클래스 내에서 특성을 비공개로 유지하거나 보호합니다. JSONSERIALIZE () 메소드의 예외를 어떻게 처리 할 수 있습니까?
위 내용은 jsonserializable 인터페이스를 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!