>  기사  >  백엔드 개발  >  공용 속성에 액세스할 때 PHP의 __get 및 __set 매직 메서드가 호출되지 않는 이유는 무엇입니까?

공용 속성에 액세스할 때 PHP의 __get 및 __set 매직 메서드가 호출되지 않는 이유는 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-11-25 19:59:15812검색

Why are PHP's __get and __set magic methods not invoked when accessing a public property?

PHP의 매직 메소드 __get 및 __set

PHP는 개발자가 속성 액세스 및 메소드 호출과 같은 특정 작업을 오버로드할 수 있는 매직 메소드를 제공합니다. 이러한 메소드 중에는 속성 액세스의 기본 동작을 재정의하도록 설계된 __get 및 __set가 있습니다.

제공된 코드는 공개 속성과 매직 메소드 __get 및 __set를 사용하여 foo 클래스를 정의합니다. 그러나 $foo->bar에 액세스하기 위해 이러한 메소드를 사용하려고 시도하면 공용 속성에만 액세스됩니다.

그 이유는 속성이나 메소드에 액세스할 수 없는 경우에만 __get 및 __set가 호출되기 때문입니다. $foo->bar는 공용 속성이므로 매직 메소드가 실행되지 않습니다.

PHP 매뉴얼에 따르면 액세스할 수 없는 속성에서 데이터를 읽을 때는 __get이 실행되고, 액세스할 수 없는 속성에 데이터를 쓸 때는 __set가 사용됩니다. 속성. 이 경우 클래스 멤버는 공개되므로 액세스할 수 있으므로 매직 메서드가 관련성이 없게 됩니다.

매직 메서드를 사용하는 대신 적절한 getter 및 setter를 구현하거나 보다 효율적이고 예측 가능한 동작을 위해 속성에 직접 액세스하는 것이 좋습니다. 매직 메소드는 일반적인 방법으로 속성이나 메소드에 액세스할 수 없는 예외적인 경우를 위해 예약되어야 합니다.

위 내용은 공용 속성에 액세스할 때 PHP의 __get 및 __set 매직 메서드가 호출되지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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