1、__construct():构造函数,new一个新对象时,自动调用
[public] function __construct($name=""){ $this -> name = $name; }
2、__destruct():析构函数,当一个对象被销毁前,自动调用
function __destruct(){ echo ""; }
3、__get():访问类中私有属性时,自动调用。传递读取的属性名,返回$this->属性名
function __get($key){
switch ($key) {
case 'name':
return $this->$key."(这是__get读取时加上的文字)";
case 'age':
return "0".$this->$key;
default:
return $this->$key;
}
return $this->$key;
}
4、__set():给类的私有属性赋值时,自动调用。传递需要设置的属性名和属性值
function __set($key,$value){ if($key=="name"){ $this->$key = $value."(这是__set设置上的文字!)"; return; } $this->$key = $value; }
5、__isset():使用isset()检测对象私有属性时,自动调用。传递检测的属性名,返回isset($this->属性名)
function __isset($name){ if($name=="sex") return; return isset($this->$name); }
6、__unset():使用unset()删除对象私有属性时,自动调用。传递删除的函数名,方法中执行unset($this->属性名)
function __unset($name){ if($name=="name"){ echo "<span style='color:red;'>哈哈哈哈name你删不掉!</span><br>"; return; } unset($this->$name); }
7、__toString():使用echo打印对象时,自动调用。返回想要在打印对象时显示的内容,返回必须是字符串
function __toString(){ $str = <<<str 您要打印的对象属性如下:<br/> $name => {$this->name};<br/> $age => {$this->age};<br/> str; return $str; }
8、__call():调用一个类中未定义或未公开的方法时,自动调用。传递被调用的函数名,和参数列表数组
function __call($funcName,$funcParams){ echo "您调用的函数:{$funcName},参数列表"; print_r($funcParams) }
9、__clone():当使用clone关键字克隆一个对象时,自动调用。作用是为新克隆的对象进行初始化赋值
function __clone(){ $this->name = "李四"; }
10、__sleep():对象反序列化时,自动调用。返回一个数组,数组中的值就是可以序列化的属性
function __sleep(){ return array("name","age"); //只有name/age两个属性可以串行化 }
11、__wakeup():对象反序列化时,自动调用。为反序列化新产生的对象,进行初始化赋值
function __wakeup(){ $this->name = "李四"; }
12、__autoload():需要在类外部声明函数。当实例化一个未声明的类时,自动调用。传递实例化的类名,可以使用类名自动加载对应的类文件
function __autoload($className){ include strtolower($className).".class.php" }