Home  >  Article  >  Backend Development  >  How to follow the execution order of PHP magic methods?

How to follow the execution order of PHP magic methods?

WBOY
WBOYOriginal
2024-04-17 21:33:01991browse

PHP The execution order of magic methods follows the following rules: magic methods with high priority are executed first. If both the subclass and the parent class define magic methods with the same name, the magic method of the subclass will be executed first. If a class defines both a regular method and a magic method with the same name, the regular method will be executed first.

PHP 魔术方法的执行顺序如何遵循?

Execution order of PHP magic methods

In PHP, magic methods are special methods that can handle object properties, methods and events. method. These methods begin and end with a double underscore (__).

The execution order of magic methods is specified by the PHP manual and follows the following rules:

1. Methods with high priority

Those with high priority Magic methods are executed before lower priority methods. The priority from high to low is as follows:

  • __construct
  • __destruct
  • __callStatic
  • __call
  • __get
  • ##__set
  • ##__isset
  • __unset
2. Inheritance

If both the subclass and the parent class define the same name Magic method, the magic method of the subclass will be executed first.

3. Method overloading

If a class defines both a regular method and a magic method with the same name, the regular method will be executed first.

Practical case

The following is a practical case demonstrating the execution sequence of magic methods:

class Example {

    public function getAttribute($name) {
        echo "Get attribute $name using function.\n";
    }

    public function __get($name) {
        echo "Get attribute $name using __get() magic method.\n";
    }
}

$example = new Example();
$example->getAttribute('age'); // 输出:Get attribute age using function.
$example->hobby; // 输出:Get attribute hobby using __get() magic method.

In the above example, although

getAttribute ()

and __get() are both used to get attributes, but getAttribute() is a regular method with higher priority, so it is executed in the first call . In the second call, since no regular method with the same name exists, the __get() magic method is executed.

The above is the detailed content of How to follow the execution order of PHP magic methods?. 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