PHP类魔术方法集合

class Test{
    function __construct() { //开始时执行
        print __construct n“;
    }

    function __destruct() { //结束时执行
        echo __destruct n“;
    }

    function __set($ name,$ val){ //赋值时执行
        echo __set[name: .$name . ,val: .$ val . ] n “;
    }

    function __get($ name){ //获取值时执行
        echo __get[name: .$name . ] n“;
    }

    function __isset($ name){ //判断存在时执行
        echo __isset[name: .$name . ] n“;
    }

    function __unset($ name){ //销毁属性时执行
        echo __unset[name: .$name . ] n“;
    }

    function __call($ name,$ bb){ //调用不可用方法时执行
        var_dump ( $name , $bb ) ;
    }

    function __callStatic (){ //调用不可用静态方法时执行 PHP 5.3.0之后版本
        var_dump ( $name , $bb ) ;
    }

    function __sleep(){ //序列化时
        echo __sleep n“;
    }

   function __wakeup(){ //反序列化时
        echo __wakeup n“;
    }

    function __toString(){
        return 对象不能直接当字符串打印啦 n“;
    }

    function __set_state(){ //var_export 时会调用
        echo__set_state() n“;
    }

    function __clone (){ //clone时会调用
        echo __clone n“;
    }

}


$Test = new Test;

$Test -> a = 1; //__set();

$Test -> b; //__get();

isset($ Test -> c); //__isset();

unset($ Test -> d); //__unset();

$Test -> test( 11111111 ); //__call();

//Test::test2(‘aaaa’); // PHP 5.3.0之后版本

echo $ Test; //__toString();

$Test2 = clone $Test ; // __clone();