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();