객체의 JSON 표현을 위해 객체 속성을 동적으로 만들려고합니다. User
클래스에는 몇 가지 기본 속성이 있습니다 (__construct
으로 설정). 나는 객체 지향 스타일을 선호하기 때문에 배열 대신 사용자 정의 객체를 사용하고 있습니다. (또한 사용자 정의 setter/getters 메서드가 필요합니다.)"엄격한 표준 : 빈 값에서 기본 객체 만들기"
그러나 첫 번째 시도는 저를 제공합니다
엄격한 기준 : 빈 값의 기본 객체를 생성합니다. 코드가 실제로 작동하는 (그리고
json_encode
오른쪽 출력을 보여줍니다) 경우에도
:
<?php
class User
{
protected $data = array();
public function __set($property, $value)
{
$this->data[$property] = $value;
}
}
$u = new User();
$u->name = "James Smith"; // Works
$u->status->active = false; // Fail
$u->status->modified = time();
var_dump(json_encode($u));
?>
나는 전화 $u->status->active
이, 재산 $u->status
아직 존재하지 않는 경우 때문에 그것이 생각합니다. 이 문제를 해결하는 방법을 알고 계십니까?
감사합니다. 새로운'stdClass()'문장을 제거 할 수있는 기회 (어쩌면'__set()'사용)? – gremo
글쎄, 당신은 상태 필드를 초기화해야하고, 거기에 객체를 생성해야만 활성 필드를 설정할 수 있습니다. 그래서 이것, 또는 "$ u-> newObjectField ($ fieldName)"와 같은 새로운 함수를 생성하여 fieldName에 새로운 객체를 생성하고 초기화합니다. – Palantir
안녕하세요, 문제를 해결하셨습니까? 이 기능이 유용하다고 판단되면 upvote 또는 accept하십시오. – Palantir