Home > Backend Development > PHP Problem > Commonly used magic methods in PHP (summary sharing)

Commonly used magic methods in PHP (summary sharing)

WBOY
Release: 2023-03-16 19:32:02
forward
1644 people have browsed it

(Recommended tutorial: PHP video tutorial)

Constructor method/__construct

When the class is instantiated

Simply put, when a new class is created, this method will automatically execute

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

new autofelix();
Copy after login

Destruction method/__destruct

When the class is destroyed Automatically triggered when

You can use the unset method to trigger this method

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

unset(new autofelix());
Copy after login

Clone method/__clone

It will be automatically called when the class is cloned

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

$a = new autofelix();
clone $a;
Copy after login

non Static calling method/__call

It will be automatically called when the method to be called does not exist or has insufficient permissions

For example, if I call a private modified method inside the class from outside the class

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

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

(new autofelix())->say();
Copy after login

Static calling method/__callStatic

It will be automatically called when the static method to be called does not exist or has insufficient permissions

For example, I call a private modified static method inside the class from outside the class

<?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();
Copy after login

Print method/__debugInfo

This method will be called when var_dump() class object

If this method is not defined, var_dump() will print out all classes Attribute

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

var_dump(new autofelix());
Copy after login

Get member attributes/__get

Through it, you can get private member attributes outside the object

<?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;
Copy after login

Get inaccessible attributes/__isset

When pairing Inaccessible properties will be automatically called when calling isset() or 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);
Copy after login

Attribute assignment/__set

Will be triggered when assigning a value to an undefined property

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

(new autofelix())->name = &#39;飞兔小哥&#39;;
Copy after login

Call the object itself/__invoke

The object itself cannot be used directly as a function

If the object is called as a function, this method will be triggered

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

(new autofelix())();
Copy after login

Serialization call / __sleep

Will be automatically called when serialize() is called outside the class

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

serialize(new autofelix());
Copy after login

Deserialization call/__wakeup

Will be called when the unserialize() method is executed Automatic call

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

unserialize(new autofelix());
Copy after login

Output character call/__toString

What should be returned when a class is treated as a string

A string type must be returned here, otherwise a fatal error will be reported

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

$a = new autofelix();
echo $a;
Copy after login

Delete call/__unset

When unset() is called on an inaccessible property, it will be automatically called

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

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

$a = new autofelix();
unset($a->name);
Copy after login

(Recommended tutorial: PHP video tutorial)

The above is the detailed content of Commonly used magic methods in PHP (summary sharing). For more information, please follow other related articles on the PHP Chinese website!

Related labels:
php
source:jb51.net
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template