PHP의 매직 메소드는 무엇입니까? 그리고 그것을 구현하는 방법?



이 기사는 PHP의 다양한 Magic Methods with Examples에 대한 상세하고 포괄적 인 지식을 제공합니다.

에 , 특수 함수는 자동으로 호출 될 수있는 방식으로 정의 될 수 있으며 이러한 함수 내에서 코드를 실행하기 위해 함수 호출이 필요하지 않습니다. 이 기능은 매직 방법으로 알려진 특수 방법으로 사용할 수 있습니다. 이 기사에서는 PHP의 최상위 매직 메소드에 대해 설명합니다.

PHP의 매직 메소드는 무엇입니까?

2 개의 밑줄 (__)로 시작하는 메소드는 일반적으로 PHP에서 매직 메소드라고합니다. 이러한 메소드 이름은 일부 목록으로 제한됩니다. PHP 예약 된 지원되는 키워드. 따라서 어떤 함수도 PHP 매직 메서드의 이름으로 정의해서는 안됩니다.





Magic-Methods-in-PHP

일반적으로 이러한 함수는 사용자가 정의해야하며 명시 적으로 호출 할 필요가 없습니다.



PHP의 매직 메소드 목록

  • __construct ()
  • __destruct ()
  • __call ($ fun, $ arg)
  • __callStatic ($ fun, $ arg)
  • __get ($ property)
  • __set ($ property, $ value)
  • __isset ($ 콘텐츠)
  • __unset ($ content)
  • __자다()
  • __wakeup ()
  • __toString ()
  • __invoke ()
  • __set_state ($ 배열)
  • __clone ()
  • __디버그 정보()
  • __construct () : 객체 생성 후 자동으로 호출되는 메서드입니다. 개체가 생성 될 때 전달 될 인수를 여기에서 정의 할 수 있습니다.
클래스 샘플 {function user_def () {echo 'user defined constructor'} function __construct () {echo 'predefined constructor'}} $ obj = new sample ()?>

  • __destruct () : 소멸자는 특정 개체에 대한 다른 참조가없는 즉시 트리거되는 개체 지향 언어의 일반적인 기능입니다.
user_def () // 객체가 파괴되었는지 확인합니다. echo is_object ($ obj). ' '?>

java는 double을 int로 바꾼다.
  • __call ($ fun, $ arg) : 이 메서드는 정의되지 않았거나 액세스 할 수없는 메서드가 호출 될 때 호출됩니다. 즉, 정의되지 않거나 액세스 할 수없는 메서드가 개체에서 호출 될 때 호출됩니다.
run ( 'teacher') // 존재하지 않는 메소드가 객체 내에서 호출되면 __call () 메소드가 자동으로 호출됩니다. $ obj-> eat ( 'ashok', 'orange') $ obj-> user_define ()?>



  • __callStatic ($ fun, $ arg) : 이 메서드는 정의되지 않았거나 액세스 할 수없는 메서드가 정적 방식으로 호출 될 때 호출됩니다.
user_define ()?>

Hadoop 맵리 듀스와 비교 한 아파치 스파크
  • __get ($ property) : 이 메서드는 PHP 속성 오버로딩에 의해 동적으로 생성 된 클래스 속성의 값을 가져 오는 데 사용됩니다.
name = $ name $ this-> reg = $ reg} public function __get ($ propertyName) {if ($ propertyName == 'reg') {if ($ this-> reg> 30) {return $ this-> reg- 10} else {return $ this-> $ propertyName}} else {return $ this-> $ propertyName}}} $ obj = new Student ( 'Ashok', 60) // Student 클래스로 객체를 인스턴스화하고 초기 값을 할당 생성자를 사용하여 속성에. echo '이름 :'. $ obj-> name. ''// private 속성에 액세스하면 __get () 메서드가 자동으로 호출되므로 속성 값을 간접적으로 가져올 수 있습니다. echo 'reg :'. $ obj-> reg. ''// __get () 메서드는 자동으로 호출되며 객체 자체에 따라 다른 값을 반환합니다. ?>

  • __set ($ property, $ value) : 이 메서드는 PHP 속성 오버로딩에 의해 동적으로 생성 된 클래스 속성에 대한 값을 입력하는 데 사용됩니다.
name = $ name $ this-> reg = $ reg} public function __set ($ property, $ value) {if ($ property == 'reg') $ value $ property = $ value public function fun () {echo '내 name은 '. $ this-> name.', 제 등록 번호는 '. $ this-> reg}} $ obj = new Student ('Ashok ', 40) // 초기 값은 코드에 따라 변경됩니다. 이하. $ obj-> name = 'Sushma'// 'name'속성이 성공적으로 할당됩니다. __set () 메서드가 없으면 프로그램에서 예외가 발생합니다. $ obj-> age = 16 // 'reg'속성이 성공적으로 할당됩니다. $ obj-> reg = 160 // 160은 잘못된 값이므로 할당에 실패합니다. $ obj-> fun ()?>

  • __isset ($ 콘텐츠); 이 메서드는 정의되지 않았거나 액세스 할 수없는 멤버에 대해 isset () 또는 empty ()를 호출하는 동안 호출됩니다. PHP isset () 함수를 사용하여 필요한 오버로드 속성이 설정되었는지 여부를 확인하면서 자동으로 호출됩니다.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} public function __isset ($ content) {echo '{$ content} 속성은 비공개이며 __isset () 메서드는 자동으로 호출됩니다. 'echo isset ($ this-> $ content)}} $ obj = new Student ('Ashok ', 30) // 처음 할당 됨. echo isset ($ obj-> gender), ''echo isset ($ obj-> name), ''echo isset ($ obj-> reg), ''?>

  • __unset ($ content) : 이 메서드는 정의되지 않았거나 액세스 할 수없는 멤버에 대해 reset ()을 호출하는 동안 호출됩니다.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} public function __unset ($ content) {echo '클래스 외부에서 unset () 메서드를 사용할 때 자동으로 호출됩니다. 'echo isset ($ this-> $ content)}} $ obj = new Student ('Ashok ', 30) // 처음 할당 됨. unset ($ obj-> gender) unset ($ obj-> name) unset ($ obj-> reg)?>

  • __자다(): 이 메서드는 serialize ()를 실행하는 동안 먼저 호출됩니다. 직렬화 전에 PHP 클래스 객체를 정리할 때 객체의 속성 배열을 반환합니다.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} public function __sleep () {echo '클래스 외부에서 serialize () 메서드가 호출 될 때 호출됩니다. '$ this-> name = base64_encode ($ this-> name) return array ('name ','reg ') // 반환 된 속성의 이름이 요소 인 값을 반환해야합니다. }} $ obj = new Student ( 'Ashok') // 처음 할당 됨. echo serialize ($ obj) echo ''?>

  • __wakeup () : 이 메서드는 deserialization ()이 실행되는 동안 호출됩니다. deserialization ()을 호출 할 때 개체 속성 및 리소스를 복원하는 작업을 반대로 수행합니다.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} public function __sleep () {echo '클래스 외부에서 serialize () 메서드가 호출 될 때 호출됩니다. '$ this-> name = base64_encode ($ this-> name) return array ('name ','reg ') // 반환 된 속성의 이름이 요소 인 값을 반환해야합니다. } public function __wakeup () {echo 'unserialize () 메서드가 클래스 외부에서 호출 될 때 호출됩니다. '$ this-> name = 2 $ this-> gender ='Male '}} $ obj = new Student ('Ashok ') // 처음 할당 됨. var_dump (serialize ($ obj)) var_dump (unserialize (serialize ($ obj)))?>

  • __toString () : 이 메서드는 객체를 직접 인쇄하기 위해 echo 메서드를 사용하는 동안 호출됩니다. PHP 인쇄 문에서 클래스 인스턴스를 사용하는 동안 문자열 값을 반환 할 것으로 예상됩니다.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} public function __toString () {return 'go go go'}} $ obj = new Student ( 'Ashok') // 처음 할당 됨. 에코 $ obj?>

  • __invoke () : 이 메서드는 함수를 호출하는 방식으로 객체를 호출하려고 시도하는 동안 호출 될 클래스에서 정의됩니다.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} public function __invoke () {echo 'This is an object'}} $ obj = new Student ( 'Ashok') // 처음 할당 됨 . $ obj ()?>

  • __set_state ($ array) : 이 메서드는 var_export ()를 호출하는 동안 호출됩니다. 개체 속성 배열을 내보내는 동안 호출되는 정적 메서드이며 이러한 배열 변수를 인수로 기대합니다.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender}} $ obj = new Student ( 'Ashok') // 처음 할당 됨. var_export ($ obj)?>

  • __clone () : 이 메서드는 개체가 복사 될 때 호출됩니다.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} public function __clone () {echo __METHOD__. '객체를 복제하고 있습니다. '}} $ obj = new Student ('Ashok ') // 처음 할당 됨. $ obj2 = clone $ obj var_dump ( 'object1 :') var_dump ($ obj) echo ''var_dump ( 'object2 :') var_dump ($ obj2)?>

리눅스를위한 최고의 자바 IDE
  • __디버그 정보(): 이 메서드는 표시되어야하는 속성을 얻기 위해 객체를 덤프하는 동안 var_dump ()에 의해 호출됩니다. 메서드가 개체에 정의되어 있지 않으면 모든 공용, 보호 및 개인 속성이 표시됩니다.
prop = $ val} public function __debugInfo () {return [ 'propSquared'=> $ this-> prop ** 2,]}} var_dump (new Sample (22))?>

이것으로 우리는 PHP 기사에서이 마법의 방법을 끝 맺는다. PHP의 다양한 마법 방법에 대한 아이디어를 얻었기를 바랍니다.

확인 전 세계에 걸쳐 250,000 명 이상의 만족 한 학습자 네트워크를 보유한 신뢰할 수있는 온라인 학습 회사 인 Edureka에서 작성했습니다.

질문이 있으십니까? ”의 댓글 섹션에 언급하십시오. 매직 방법 PHP ”그러면 다시 연락 드리겠습니다.