> 백엔드 개발 > PHP 문제 > PHP에서 일반적으로 사용되는 매직 메소드(요약 공유)

PHP에서 일반적으로 사용되는 매직 메소드(요약 공유)

WBOY
풀어 주다: 2023-03-16 19:32:02
앞으로
1644명이 탐색했습니다.

(권장 튜토리얼: PHP 비디오 튜토리얼)

생성자 메소드/__construct

클래스가 인스턴스화될 때 호출됩니다

간단히 말하면, 새 클래스가 생성되면 이 메소드가 자동 실행됩니다

<?php
class autofelix 
{
    public function __construct()
    {
        echo &#39;我是飞兔小哥~&#39;;
    }
}

new autofelix();
로그인 후 복사

Destructor 메소드/__destruct

클래스가 소멸될 때 자동으로 트리거됩니다

unset 메소드를 사용하여 이 메소드를 트리거할 수 있습니다

<?php
class autofelix 
{
    public function __destruct()
    {
        echo &#39;我是飞兔小哥,别销毁我~&#39;;
    }
}

unset(new autofelix());
로그인 후 복사

Clone 메소드/__clone

클래스가 복제될 때 자동으로 호출됩니다

<?php
class autofelix 
{
    public function __clone()
    {
        echo &#39;我是飞兔小哥,我想克隆你~&#39;;
    }
}

$a = new autofelix();
clone $a;
로그인 후 복사

Non 정적 호출 메서드/__call

호출할 메서드가 없거나 권한이 부족할 때 자동으로 호출됩니다

예를 들어 클래스 외부에서 클래스 내부의 수정된 프라이빗 메서드를 호출하는 경우

<?php
class autofelix 
{
    private function say() 
    {
        echo &#39;我是飞兔小哥~&#39;;
    }

    public function __call($name, $arguments)
    {
        echo &#39;你无权调用&#39; . $name . &#39;方法&#39;;
        die;
    }
}

(new autofelix())->say();
로그인 후 복사

정적 호출 method/__callStatic

호출할 때 static 메소드가 존재하지 않거나 권한이 부족할 때 자동으로 호출됩니다

예를 들어 클래스 내부의 수정된 private static 메소드를 클래스 외부에서 호출하면

<?php
class autofelix 
{
    private static function say() 
    {
        echo &#39;我是飞兔小哥~&#39;;
    }

    public function __callStatic($name, $arguments)
    {
        echo &#39;你无权调用&#39; . $name . &#39;方法&#39;;
        die;
    }
}

$a = new autofelix();
$a::say();
로그인 후 복사

Print 메소드/__debugInfo

이 메소드는 var_dump() 클래스 객체가 호출될 때 호출됩니다.

이 메소드가 정의되지 않으면 var_dump()는 모든 클래스 속성을 인쇄합니다.

<?php
class autofelix 
{
    public function __debugInfo()
    {
        echo &#39;飞兔小哥给你温馨提示&#39;;
    }
}

var_dump(new autofelix());
로그인 후 복사

Get 멤버 속성/__get

이를 통해 객체 외부에서 비공개 멤버 속성을 가져올 수 있습니다

<?php
class autofelix 
{
    private $name = &#39;飞兔小哥&#39;;

    public function __get($name)
    {
        if(in_array($name, [&#39;name&#39;, &#39;age&#39;])) {
           echo $this->name;
        } else {
            echo &#39;不是什么东西都能访问的~&#39;;
        }
    }
}

(new autofelix())->name;
로그인 후 복사

액세스할 수 없는 속성 가져오기/__isset

액세스할 수 없는 속성에 대해 isset() 또는 empty()가 호출되면 자동으로 호출됩니다.

<?php
class autofelix 
{
    private $name = &#39;飞兔小哥&#39;;

    public function __isset($name)
    {
        if(in_array($name, [&#39;name&#39;, &#39;age&#39;])) {
           echo $this->name;
        } else {
            echo &#39;不是什么东西都能访问的~&#39;;
        }
    }
}

isset(new autofelix()->name);
로그인 후 복사

속성 할당/__set

정의되지 않은 속성에 값을 추가하면 트리거됩니다

<?php
class autofelix 
{
    public function __set($name, $value)
    {
        echo &#39;你想给&#39; . $name . &#39;赋值&#39; . $value;
    }
}

(new autofelix())->name = &#39;飞兔小哥&#39;;
로그인 후 복사

객체 자체 호출/__invoke

객체 자체는 함수로 직접 사용할 수 없습니다

객체를 함수로 호출하면 이 메서드가 트리거됩니다

<?php
class autofelix 
{
    public function __invoke()
    {
        echo &#39;你想调用我?&#39;;
    }
}

(new autofelix())();
로그인 후 복사

직렬화 호출/__sleep

클래스 외부에서 serialize()를 호출하면 자동으로 호출됩니다

<?php
class autofelix 
{
    public function __sleep()
    {
        echo &#39;我是飞兔小哥~&#39;;
    }
}

serialize(new autofelix());
로그인 후 복사

역직렬화 호출/__wakeup

unserialize() 메서드가 실행되면 자동으로 호출됩니다

<?php
class autofelix 
{
    public function __wakeup()
    {
        echo &#39;我是飞兔小哥~&#39;;
    }
}

unserialize(new autofelix());
로그인 후 복사

출력 문자 호출/ __toString

클래스가 문자열로 처리될 때 반환되어야 하는 것

문자열 유형이 여기에 반환되어야 하며 그렇지 않으면 치명적인 오류가 보고됩니다

<?php
class autofelix 
{
    public function __toString()
    {
        return &#39;我是你得不到的对象...&#39;;
    }
}

$a = new autofelix();
echo $a;
로그인 후 복사

Delete call/__unset

unset()이 액세스할 수 없는 항목에서 호출될 때 속성이 자동으로 호출됩니다

<?php
class autofelix 
{
    private $name = &#39;飞兔小哥&#39;;

    public function __unset($name)
    {
        echo &#39;别删我,我是你兔哥&#39;;
    }
}

$a = new autofelix();
unset($a->name);
로그인 후 복사

(추천 튜토리얼: PHP 비디오 튜토리얼)

위 내용은 PHP에서 일반적으로 사용되는 매직 메소드(요약 공유)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
php
원천:jb51.net
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿