PHP中把以两个下划线__开头的方法称为魔术方法(Magic methods),这些方法在PHP中充当了举足轻重的作用。 魔术方法包括:
- __construct(),构造函数
- __destruct(),析构函数
- __call($funName, $arguments),在对象中调用一个不可访问方法时调用
- __callStatic($funName, $arguments),用静态方式中调用一个不可访问方法时调用
- __get(string $name),读取不可访问(protected 或 private)或不存在的属性的值时,__get() 会被调用。
- __set(string $name, mixed $value),在给不可访问(protected 或 private)或不存在的属性赋值时,__set() 会被调用。
- __isset(string $name),当对不可访问(protected 或 private)或不存在的属性调用 isset() 或 empty() 时,__isset() 会被调用。
- __unset(string $name),当对不可访问(protected 或 private)或不存在的属性调用 unset() 时,__unset() 会被调用。
- __sleep(),执行serialize()时,先会调用这个函数
- __wakeup(),执行unserialize()时,先会调用这个函数
- __toString(),类被当成字符串时的回应方法
- __invoke(),当尝试以调用函数的方式调用一个对象时,invoke()方法会被自动调用
- __set_state(),调用var_export()导出类时,此静态方法会被调用。
- __clone(),当对象复制完成时调用
- __autoload(),尝试加载未定义的类
- __debugInfo(),打印所需调试信息