1
저는 PHP의 OO 시스템과 약간의 단점에 다소 익숙합니다. __get 및 __set 메서드는 "액세스 할 수없는"필드에 액세스 할 때 읽었습니다. 따라서 공개 된 필드 나 클래스 내의 보호 된 필드에 액세스하는 것은 분명히 이러한 함수를 호출하지 않습니다. 하지만 $ obj-> a에 액세스하려고 시도하면 전에 정의 된 적이없는 것은 무엇입니까? 나는 원래 이것이 __get 또는 __set을 호출 할 것이라고 생각했지만 그것이 그렇지 않은 것처럼 보인다. 이 문제를 해결하려면 동적으로 생성 된 모든 필드를 데이터 배열에 넣는 것이 좋습니다.PHP 마술 __get 및 __set. 동적으로 생성 된 필드는 "액세스 가능"하다고 간주됩니까?
$ obj-> 따라서 공개 입력란입니까? 고마워요!
예
class Example
{
public function __get($field)
{
echo 'Getting ' . $field;
return $this->$field;
}
public function __set($field, $value)
{
echo 'Setting ' . $field . ' to ' . $value;
$this->$field = $value;
}
}
$obj = new Example;
$obj->randomField = 1; //here randomField is set to 1 but the echo statement is not printed out in __set
echo $obj->randomField; //here, 1 will be echoed but not the statement in __get
//is randomField a public field?
은'__set'가 인쇄됩니다 문제가 무엇인가에 에코? – xdazz
"$ obj-> 따라서 공개 필드입니까?" 예, 귀하의 예를 보여줍니다 ... – Matthew
나는 "동적"속성이 공개 된 가시성을 가지고 있다는 것을 경험으로 알고 있지만, 그렇게 말한 PHP 수동 인용을 헛되이 수색했습니다. –