Do you know all the sixteen magic methods in PHP?
No.1 __construct()
定义:类的构造函数 解释:对象创建后第一个被自动调用的方法,通常被用来执行一些有用的初始化任务,例如在创建对象时对成员属性赋予初始值。 例子: Class Person{ public $name; public $age; public $sex; public function __construct($name = '', $sex = '男', $age = 28) { $this->name = $name; $this->sex = $sex; $this->age = $age; }}注意:如果子类中定义了构造函数则不会调用其父类的构造函数。要执行父类的构造函数,需要在子类的构造函数中调用 parent::__construct()
NO.2 __destruct() [abnormal view]
定义:类的析构函数 解释:与构造函数相反,在类销毁之前执行一些操作,比如关闭文件、释放结果等。 例子: 主动调用 unset( $obj )主动调用 $obj = NULL程序自动结束
NO.3 __call()
定义:在对象中调用一个不存在的方法时 自动调用 解释:为了避免当调用的方法不存在时产生错误,而意外的导致程序中止,可以使用 __call() 方法来避免。
NO.4 __callStatic()
定义:同上 不同在于调用静态方法时 自动调用
NO.5 __get()
定义:可以在对象的外部获取私有成员属性的值 例子:private $name;function __construct($name="", $age=1){ $this->name = $name;}public function __get($propertyName){ return $this->$propertyName;}// 通过Person类实例化的对象,并通过构造方法为属性赋初值$Person = new Person("小明", 60);// 直接访问私有属性name,自动调用了__get()方法可以间接获取echo "姓名:" . $Person->name . "<br>";
No.6 __set()
定义:与__get()类似 为私有属性赋值 例子:public function __set($propertyName, $value){ $this->$propertyName = $value;}
No.7 __isset()
定义:在类外部 判断属性isset()例子:public function __isset($content) { echo "当在类外部使用isset()函数测定私有成员{$content}时,自动调用<br>"; echo isset($this->$content);}echo isset($person->name);
#No.8 __unset()
定义:在类外部删除私有变量时自动调用
No.9 __sleep()
定义:执行serialize时会被自动调用 例子:public function __sleep(){ $this->name = base64_encode($this->name); return ['name', 'age'];}echo serialize($person);
#No.10 __wakeup()
定义:与__sleep类似 在执行unserialize()时被自动调用
No.11 __toString()
定义:当类被当成字符串输出时如何响应 例如 echo $obj; 应该显示些什么。 注意:此方法必须返回一个字符串,否则将发出一条 `E_RECOVERABLE_ERROR` 级别的致命错误。 警告:不能在 __toString() 方法中抛出异常。这么做会导致致命错误。
NO.12 __invoke()
定义:当尝试以调用函数的方式调用一个对象生效 例子:public function __invoke() { echo '拿我当函数用,我就会被自动调用';}$person = new Perseon();$person();
No.13 __set_state()
定义:调用var_export导出类时,该方法自动被调用。
#No.14 __clone()
定义:当对象复制完成时调用 例子:public function __clone(){ echo __METHOD__."你正在克隆对象<br>"; $this->name = 'new name'; $this->age = 18;}$copy_of_object = clone $object;
No.15 __autoload()
定义:尝试加载未定义的类 例子:function __autoload($className) { $filePath = “project/class/{$className}.php”; // 判断文件是否可读 if (is_readable($filePath)) { require($filePath); } } if (条件A) { $a = new A(); $b = new B(); $c = new C(); // … 业务逻辑 } else if (条件B) { $a = newA(); $b = new B(); // … 业务逻辑 }注意:这里可以只用require,因为一旦包含进来后,php引擎再遇到类A时,将不会调用__autoload,而是直接使用内存中的类A,不会导致多次包含。 扩展:<?phpclass autoloader { public static $loader; public static function init() { if (self::$loader == NULL) self::$loader = new self (); return self::$loader; } public function __construct() { spl_autoload_register ( array ($this, 'model' ) ); spl_autoload_register ( array ($this, 'library' ) ); } public function model($class) { $class = preg_replace ( '/_model$/ui', '', $class ); set_include_path ( get_include_path () . PATH_SEPARATOR . '/model/' ); spl_autoload_extensions ( '.model.php' ); spl_autoload ( $class ); } public function library($class) { set_include_path ( get_include_path () . PATH_SEPARATOR . '/lib/' ); spl_autoload_extensions ( '.library.php' ); spl_autoload ( $class ); }}//callautoloader::init ();?>
#No.16 __debugInfo()
定义:打印所需调试信息 例子:public function __debugInfo(){ return [ 'message' => "姓名:".$this->name . " 年龄:".$this->age ];}$person = new Person('tongfei', 28);var_dump($person);
【Recommendation:《PHP 视频 Course》】
The above is the detailed content of Do you know all the sixteen magic methods in PHP?. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics



PHP 8.4 brings several new features, security improvements, and performance improvements with healthy amounts of feature deprecations and removals. This guide explains how to install PHP 8.4 or upgrade to PHP 8.4 on Ubuntu, Debian, or their derivati

Visual Studio Code, also known as VS Code, is a free source code editor — or integrated development environment (IDE) — available for all major operating systems. With a large collection of extensions for many programming languages, VS Code can be c

If you are an experienced PHP developer, you might have the feeling that you’ve been there and done that already.You have developed a significant number of applications, debugged millions of lines of code, and tweaked a bunch of scripts to achieve op

This tutorial demonstrates how to efficiently process XML documents using PHP. XML (eXtensible Markup Language) is a versatile text-based markup language designed for both human readability and machine parsing. It's commonly used for data storage an

JWT is an open standard based on JSON, used to securely transmit information between parties, mainly for identity authentication and information exchange. 1. JWT consists of three parts: Header, Payload and Signature. 2. The working principle of JWT includes three steps: generating JWT, verifying JWT and parsing Payload. 3. When using JWT for authentication in PHP, JWT can be generated and verified, and user role and permission information can be included in advanced usage. 4. Common errors include signature verification failure, token expiration, and payload oversized. Debugging skills include using debugging tools and logging. 5. Performance optimization and best practices include using appropriate signature algorithms, setting validity periods reasonably,

A string is a sequence of characters, including letters, numbers, and symbols. This tutorial will learn how to calculate the number of vowels in a given string in PHP using different methods. The vowels in English are a, e, i, o, u, and they can be uppercase or lowercase. What is a vowel? Vowels are alphabetic characters that represent a specific pronunciation. There are five vowels in English, including uppercase and lowercase: a, e, i, o, u Example 1 Input: String = "Tutorialspoint" Output: 6 explain The vowels in the string "Tutorialspoint" are u, o, i, a, o, i. There are 6 yuan in total

Static binding (static::) implements late static binding (LSB) in PHP, allowing calling classes to be referenced in static contexts rather than defining classes. 1) The parsing process is performed at runtime, 2) Look up the call class in the inheritance relationship, 3) It may bring performance overhead.

What are the magic methods of PHP? PHP's magic methods include: 1.\_\_construct, used to initialize objects; 2.\_\_destruct, used to clean up resources; 3.\_\_call, handle non-existent method calls; 4.\_\_get, implement dynamic attribute access; 5.\_\_set, implement dynamic attribute settings. These methods are automatically called in certain situations, improving code flexibility and efficiency.
