search
HomeBackend DevelopmentPHP ProblemCommonly used magic methods in PHP (summary sharing)

(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();

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());

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;

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();

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();

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());

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;

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);

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;;

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())();

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());

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());

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;

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);

(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!

Statement
This article is reproduced at:脚本之家. If there is any infringement, please contact admin@php.cn delete

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

MantisBT

MantisBT

Mantis is an easy-to-deploy web-based defect tracking tool designed to aid in product defect tracking. It requires PHP, MySQL and a web server. Check out our demo and hosting services.

EditPlus Chinese cracked version

EditPlus Chinese cracked version

Small size, syntax highlighting, does not support code prompt function

VSCode Windows 64-bit Download

VSCode Windows 64-bit Download

A free and powerful IDE editor launched by Microsoft

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Powerful PHP integrated development environment

PhpStorm Mac version

PhpStorm Mac version

The latest (2018.2.1) professional PHP integrated development tool