Home  >  Article  >  Backend Development  >  What are the magic methods in php?

What are the magic methods in php?

青灯夜游
青灯夜游Original
2021-06-30 13:55:251650browse

Magic methods include: "__construct()", "__destruct()", "__set()", "__get()", "__isset()", "__unset()", "__sleep() ", "___wakeup()", "__call()" and so on.

What are the magic methods in php?

The operating environment of this tutorial: windows7 system, PHP7.1 version, DELL G3 computer

php magic (skill ) Method

In object-oriented programming, PHP provides a series of magic methods. These magic methods provide a lot of convenience for programming, and their role in PHP is very important. Magic methods in PHP usually start with __ (two underscores) and do not need to be explicitly called but are automatically called under certain conditions.

##__call()Automatically called when calling a non-existent method__callStatic ()Automatically called when calling a non-existent static method__toString()Automatically called when converting an object into a string__invoke()Automatically called when trying to call an object as a method__set_state() Automatically called when using the var_export() function, accepting an array parameter__clone()Automatically called when using clone to copy an object__debugInfo()Automatically called when using var_dump() to print object information

The following is a brief introduction to several commonly used magic methods:

1. __set() method

will be automatically called when assigning values ​​to undefined or invisible class attributes in the current environment. __set() method. The syntax format for defining this method is as follows:

public function __set($key, $value){
    ... ... ;
}

Among them, the parameter $key is the name of the variable to be operated, and $value is the value of the variable $key.

2. __get() method

When calling or obtaining undefined or invisible class attributes in the current environment, the __get() method will be automatically called to define the syntax format of the method. As follows:

public function __get($name){
    ... ... ;
}

The parameter $name is the name of the variable to be operated.

3. __isset() method

When the isset() or empty() function is used outside the class on an attribute that is inaccessible or does not exist in the class, __isset() will be automatically called. method, the syntax format of this method is as follows:

public function __isset($name){
    ... ... ;
}

The parameter $name is the name of the attribute to be accessed.

isset() function can check whether a variable exists and is not NULL, passing in a variable as a parameter, if the passed in variable exists, it returns true, otherwise it returns false.

empty() function can check whether a variable is empty. It also needs to pass in a variable as a parameter. If the variable does not exist, or the value of the variable is equal to FALSE, then the variable will be considered not to exist.

Public members in a class can be accessed outside the class, but private members cannot be accessed outside the class. In other words, we can use the isset() or empty() function to check whether the public properties in the class exist, but these two functions are invalid for the private properties in the class.

If we want to use the isset() or empty() function to detect the private properties in the class, we only need to add an __isset() method to the class. When used outside the class isset() or empty() function, the __isset() method in the class will be automatically called.

4. __unset() method

When the unset() function is used outside the class on an attribute that is inaccessible or does not exist in the class, the __unset() method will be automatically called. This method The syntax format is as follows:

public function __unset($name){
    ... ... ;
}

The parameter $name is the name of the attribute to be accessed.

Let’s take a look at the unset() function first. The function of the unset() function is to delete the specified variable. One or more variables need to be passed in as parameters. In addition, the function has no return value.

Similarly, we can also use the unset() function to delete member attributes in the class outside the class. Similar to the __isset() method introduced above, if you want to delete the public attributes in the class, you can directly use the unset() function; if you want to delete the private attributes in the class, you need to add an __unset() to the class. method.

5. __call() method

When calling an inaccessible or non-existent method in the class, the __call() method will be called. The syntax format of this method is as follows:

public function __call($name, $arguments){
    ... ... ;
}

where $name is the name of the method to be called, and $arguments is an array of parameters passed to $name.

When the called method does not exist, the __call() method will be automatically called, and the program will continue to execute, thus avoiding program termination caused by an error when the calling method does not exist.

6. __clone() method

You can use the clone keyword to copy an object. When the copy is completed, if the __clone() method is defined, the newly created object (the object generated by copying ), the __clone() method will be automatically called, through which we can do some necessary operations. The syntax format of the __clone() method is as follows:

public function __clone(){
    ... ... ;
}

This function does not require parameters to be passed in.

Recommended learning: "PHP Video Tutorial"

Magic method Function
__construct() Automatically when instantiating a class Call
__destruct() Automatically call when the class object is used
__set() Automatically called when assigning a value to an undefined property
__get() Automatically called when an undefined property is called
__isset() Automatically called when using isset() or empty() function
__unset() Automatically called when using unset()
__sleep() Automatically called when serializing using serialize
__wakeup() Use unserialize Automatically called when deserializing

The above is the detailed content of What are the magic methods in php?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
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