PHP는 개발자가 속성 액세스 및 메소드 호출과 같은 특정 작업을 오버로드할 수 있는 매직 메소드를 제공합니다. 이러한 메소드 중에는 속성 액세스의 기본 동작을 재정의하도록 설계된 __get 및 __set가 있습니다.
제공된 코드는 공개 속성과 매직 메소드 __get 및 __set를 사용하여 foo 클래스를 정의합니다. 그러나 $foo->bar에 액세스하기 위해 이러한 메소드를 사용하려고 시도하면 공용 속성에만 액세스됩니다.
그 이유는 속성이나 메소드에 액세스할 수 없는 경우에만 __get 및 __set가 호출되기 때문입니다. $foo->bar는 공용 속성이므로 매직 메소드가 실행되지 않습니다.
PHP 매뉴얼에 따르면 액세스할 수 없는 속성에서 데이터를 읽을 때는 __get이 실행되고, 액세스할 수 없는 속성에 데이터를 쓸 때는 __set가 사용됩니다. 속성. 이 경우 클래스 멤버는 공개되므로 액세스할 수 있으므로 매직 메서드가 관련성이 없게 됩니다.
매직 메서드를 사용하는 대신 적절한 getter 및 setter를 구현하거나 보다 효율적이고 예측 가능한 동작을 위해 속성에 직접 액세스하는 것이 좋습니다. 매직 메소드는 일반적인 방법으로 속성이나 메소드에 액세스할 수 없는 예외적인 경우를 위해 예약되어야 합니다.
위 내용은 공용 속성에 액세스할 때 PHP의 __get 및 __set 매직 메서드가 호출되지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!