- __construct(),类的构造函数
- __destruct(),类的析构函数
- __call(),在对象中调用一个不可访问方法时调用
- __callStatic(),用静态方式中调用一个不可访问方法时调用
- __get(),获得一个类的成员变量时调用
- __set(),设置一个类的成员变量时调用
- __isset(),当对不可访问属性调用isset()或empty()时调用
- __unset(),当对不可访问属性调用unset()时被调用。
- __sleep(),执行serialize()时,先会调用这个函数
- __wakeup(),执行unserialize()时,先会调用这个函数
- __toString(),类被当成字符串时的回应方法
- __invoke(),调用函数的方式调用一个对象时的回应方法
- __set_state(),调用var_export()导出类时,此静态方法会被调用。
- __clone(),当对象复制完成时调用
- __autoload(),尝试加载未定义的类
- __debugInfo(),打印所需调试信息
- test.php
-
<?php include "Magic.php"; $obj=new Magic(); $obj->name="调用set方法"; $obj->name; isset($obj->aa); empty($obj->bb); unset($obj->cc); $se=serialize(array("周","满","和","个人","博客","www.jb51.net","周满和","个人博客")); var_dump($se); echo "<br/>"; var_dump(unserialize($se)); echo "<br/>"; echo "$obj"."<br/>"; $obj1=clone($obj); //以函数的方式调用对象 $obj(); $obj->aaa(1,2); //尝试加载未定义的类 ?>
Magic.php
-
<?php /** **魔术方法总结 ***/ /** * */ class Magic { private $name=null; //构造方法:在构建对象的时候被使用 public function __construct() { echo "调用构造方法"."<br/>"; } //析构方法:对象别销毁或者脚本结束时候调用 public function __destruct(){ echo "对象被销毁"."<br/>"; } //当给不可访问或不存在属性赋值时被调用 //第一个参数为要赋值的变量 //第二个参数为要赋的值 public function __set($name,$value){ $this->$name=$value; echo $name.'<br/>'; } //读取不可访问或不存在属性时被调用 //参数为一个不存在的属性值 public function __get($name){ $name=$this->name; echo $name."<br/>"; } //对不可访问或不存在的属性调用isset()或empty()时被调用 //参数为一个不存在的属性值 public function __isset($name){ $name="使用isset或者empty调用了不可以或者不存在的属性"; echo $name.'<br/>'; } //对不存在或不可以访问的属性进行unsert操作 public function __unset($name){ $name="unset一个不存在或不可以访问的属性"; echo $name.'<br/>'; } //serialize(序列化)时被调用,当你不需要保存大对象的所有数据时很有用 public function __sleep(){; } //unserialize(反序列化)时被调用,可用于做些对象的初始化操作 public function __wakeup(){ } //当一个类被转换成字符串的时候调用 public function __toString(){ return "类被转换成了字符串"; } //进行对象克隆的时候调用 public function __clone(){ echo "克隆了一个对象"."<br/>"; } //当以函数的方式调用对象的时候 public function __invoke() { echo "以函数的方式调用对象"."<br/>"; } //在对象中调用一个不可访问方法时调用 //第一个参数为方法名称 //第二个参数为参数,以数组的方式传递 public function __call($funcName,$array){ var_dump($funcName); var_dump($array); } // static function autoload($className){ // ECHO $className;DIE; // } } // //实现一个自动加载 // spl_autoload_register(array('Magic', 'autoload')); // new Bb(); ?>
Bb.php
-
<?php /** * Bb类 */ class Bb { function __construct() { ehco "这是一个B类"; } } ?>
