1.__construct()和__destruct()
当对象被实例化时它会被调用,__construct()会被调用;
当对象被销毁时,__destruct()析构方法会被调用
2.__get()和__set()
读取不可访问属性的值时,__get()会被调用
在给不可访问属性赋值时,__set()会被调用
3.__isset()和__unset()
当对不可访问属性调用isset()或empty()时,__isset()会被调用
当对不可访问属性调用unset()时,__unset()会被调用
4.__call()和__callStatic() demo9实例
__call():当对象访问不存在的方法名称时,__call()方法会被自动调用。此方法有两个参数,分别是错误的方法名和错误的值
__callStatic():当对象访问不存在的静态方法名称时,__callStatic()方法会被自动调用
5.__toString() 和__invoke()
__toString ( void ):当对象被当做string使用时(即“echo 对象句柄”的时候),这个方法会被自动调用。
此方法必须用return返回一个字符串,用echo会报错。
__invoke():当对象被当成方法调用时,这个方法会被自动调用。
<?php
class Magic{
public function __tostring(){
return "hello world!";
}
public function __invoke($x){
echo "__invoke called with param ".$x."\n";
}
}
$obj = new Magic();
$obj(858); //__invoke called with param 10
?>
6.__clone()
此方法在clone对象的时候自动调用,对克隆对象初始化的一些操作。
7.__autoload(),自动载入对象的方法,如果该文件没有要实例化的类,则调用__autoload()方法。
唯一的一个魔术方法在类外使用。
<?php
function __autoload($name)
{
include ("$name" . ".php");
}
$d = new demo();
//相当于include("demo.php"),那么就可以调用demo.php里面的成员了。
//首先有demo.php文件,这个文件里面有demo类。那个$d就可以访问demo类的变量了
$t = new test();
//相当于include("test.php"),那么就可以调用demo.php里面的成员了。
?>
浙公网安备 33010602011771号