(권장 튜토리얼: PHP 비디오 튜토리얼)
클래스가 인스턴스화될 때 호출됩니다
간단히 말하면, 새 클래스가 생성되면 이 메소드가 자동 실행됩니다
<?php class autofelix { public function __construct() { echo '我是飞兔小哥~'; } } new autofelix();
클래스가 소멸될 때 자동으로 트리거됩니다
unset 메소드를 사용하여 이 메소드를 트리거할 수 있습니다
<?php class autofelix { public function __destruct() { echo '我是飞兔小哥,别销毁我~'; } } unset(new autofelix());
클래스가 복제될 때 자동으로 호출됩니다
<?php class autofelix { public function __clone() { echo '我是飞兔小哥,我想克隆你~'; } } $a = new autofelix(); clone $a;
호출할 메서드가 없거나 권한이 부족할 때 자동으로 호출됩니다
예를 들어 클래스 외부에서 클래스 내부의 수정된 프라이빗 메서드를 호출하는 경우
<?php class autofelix { private function say() { echo '我是飞兔小哥~'; } public function __call($name, $arguments) { echo '你无权调用' . $name . '方法'; die; } } (new autofelix())->say();
호출할 때 static 메소드가 존재하지 않거나 권한이 부족할 때 자동으로 호출됩니다
예를 들어 클래스 내부의 수정된 private static 메소드를 클래스 외부에서 호출하면
<?php class autofelix { private static function say() { echo '我是飞兔小哥~'; } public function __callStatic($name, $arguments) { echo '你无权调用' . $name . '方法'; die; } } $a = new autofelix(); $a::say();
이 메소드는 var_dump() 클래스 객체가 호출될 때 호출됩니다.
이 메소드가 정의되지 않으면 var_dump()는 모든 클래스 속성을 인쇄합니다.
<?php class autofelix { public function __debugInfo() { echo '飞兔小哥给你温馨提示'; } } var_dump(new autofelix());
이를 통해 객체 외부에서 비공개 멤버 속성을 가져올 수 있습니다
<?php class autofelix { private $name = '飞兔小哥'; public function __get($name) { if(in_array($name, ['name', 'age'])) { echo $this->name; } else { echo '不是什么东西都能访问的~'; } } } (new autofelix())->name;
액세스할 수 없는 속성에 대해 isset() 또는 empty()가 호출되면 자동으로 호출됩니다.
<?php class autofelix { private $name = '飞兔小哥'; public function __isset($name) { if(in_array($name, ['name', 'age'])) { echo $this->name; } else { echo '不是什么东西都能访问的~'; } } } isset(new autofelix()->name);
정의되지 않은 속성에 값을 추가하면 트리거됩니다
<?php class autofelix { public function __set($name, $value) { echo '你想给' . $name . '赋值' . $value; } } (new autofelix())->name = '飞兔小哥';
객체 자체는 함수로 직접 사용할 수 없습니다
객체를 함수로 호출하면 이 메서드가 트리거됩니다
<?php class autofelix { public function __invoke() { echo '你想调用我?'; } } (new autofelix())();
클래스 외부에서 serialize()를 호출하면 자동으로 호출됩니다
<?php class autofelix { public function __sleep() { echo '我是飞兔小哥~'; } } serialize(new autofelix());
unserialize() 메서드가 실행되면 자동으로 호출됩니다
<?php class autofelix { public function __wakeup() { echo '我是飞兔小哥~'; } } unserialize(new autofelix());
클래스가 문자열로 처리될 때 반환되어야 하는 것
문자열 유형이 여기에 반환되어야 하며 그렇지 않으면 치명적인 오류가 보고됩니다
<?php class autofelix { public function __toString() { return '我是你得不到的对象...'; } } $a = new autofelix(); echo $a;
unset()이 액세스할 수 없는 항목에서 호출될 때 속성이 자동으로 호출됩니다
<?php class autofelix { private $name = '飞兔小哥'; public function __unset($name) { echo '别删我,我是你兔哥'; } } $a = new autofelix(); unset($a->name);
(추천 튜토리얼: PHP 비디오 튜토리얼)
위 내용은 PHP에서 일반적으로 사용되는 매직 메소드(요약 공유)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!