PHP魔术方法合集
                                  PHP 将所有以“__”(两个下划线)开头的类方法保留为魔术方法。所以在定义类方法时,除了上述魔术方法,建议不要以“__”为前缀。
 
用法演示:
1、__autoload()魔术方法:
__autoload()是我们最为常用的魔术方法,常常用于自定加载类文件,做到按需加载:
2、__debugInfo()魔术方法:
3、__sleep()魔术方法:
                            
                        | 魔术方法 | 描述 | 
|---|---|
| __construct() | 初始化一个对象时触发; | 
| __destruct() | 对象销毁,或者脚本执行完时触发; | 
| __autoload() | 当使用一个不可访问的类时触发; | 
| __clone() | 对象被克隆时触发; | 
| __get() | 获取一个不可访问(属性不存在、或者无权限)的属性时触发; | 
| __set() | 为一个不可访问的属性赋值的时候触发; | 
| __isset() | 当用isset()函数判断一个不可访问的属性时触发; | 
| __unset() | 当用unset()函数操作一个不可访问的属性时触发; | 
| __call() | 当调用一个不可访问的方法时触发; | 
| __callStatic() | 当调用一个不可访问的静态方法时触发; | 
| __toString() | 当一个对象被当做字符串来操作时触发; 如$obj是一个对象,echo $obj,就会触发__toString(); | 
| __invoke() | 当一个对象被当做函数来使用时触发; 如$obj是一个对象,$obj()就会触发__invoke(); | 
| __sleep() | 在将使用serialize时触发; | 
| __wakeup() | 在使用unserialize后触发; | 
| __set_state() | 当调用var_export()导出类时触发(PHP 5.1.0起); | 
| __debugInfo() | 当调用var_dump()导出一个对象时调用(PHP 5.6.0起); | 
用法演示:
1、__autoload()魔术方法:
__autoload()是我们最为常用的魔术方法,常常用于自定加载类文件,做到按需加载:
<?php
//爱E族 aiezu.com
function __autoload($class) {
    if (class_exists($class, false)) return;
    $file = sprintf("./class/%s.php",  str_replace('_', DIRECTORY_SEPARATOR, $class));
    require_once($file);
}
// 当类Core_Db不存在时,自动引入类文件:./class/Core/Db.php
$db =  new Core_Db(); 2、__debugInfo()魔术方法:
<?php
class Aiezu {
    private $name;
    public function __construct($name) {
        $this->name = $name;
    }
    public function __debugInfo() {
        return array('SiteName'=> $this->name);
    }
}
var_dump(new Aiezu('爱E族'));PHP 5.6.0以下版本运行结果:object(Aiezu)#1 (1) {
  ["name":"Aiezu":private]=>
  string(7) "爱E族"
}PHP 5.6.0以上版本运行结果:object(Aiezu)#1 (1) {
  ["SiteName"]=>
  string(7) "爱E族"
} 3、__sleep()魔术方法:
<?php
class Aiezu {
    private $name;
    private $url = 'aiezu.com';
    public function __construct($name) {
        $this->name = $name;
    }
    public function __sleep() {
        return array('url'); //指定要序列化的属性列表
    }
}
echo serialize(new Aiezu('爱E族'));输出:O:5:"Aiezu":1:{s:10:"Aiezuurl";s:9:"aiezu.com";}
                                
                                                            