PHP 将所有以 __(两个下划线)开头的类方法保留为魔术方法
之前的构造函数与析构函数也都是魔术方法
当对类中的不能直接访问的属性赋值时,该方法被自动调用
__set不需要返回值
格式: Function __get($name,$value) {}
__get():
在类的外部调用不能直接访问的属性时,该函数方法被自动调用
魔术方法必须是公共的,且不能定义为静态的
被访问的属性的名称,它必须是一个字符串
__get必须有返回值,所以最后结束的肯定是return语句
格式: Function __get($name) {}
__isset():
判断类中的属性是否被设置了
当对不可访问属性调用 isset() 或 empty() 时,__isset()会被调用。
传入的是类的属性名称
如果属性存在,则返回属性的值,如果不存在,返回null
格式: Function __isset($name) {}
__unset():
销毁指定的变量
格式: Function __unset($name) {}
__call():
在对象中调用一个不能直接访问的非静态方法时,__call()被自动调用
$name 被访问的函数方法的名称,字符串格式
$arguments 传递过来的函数方法的参数,数组格式
格式: Function __call($name,$arguments) {
if(method_exists($this,$name))
{
call_user_func_array(array($this,$name),$arguments);
}
else
{
echo '没有对应的函数可以被调用';
}
}
__toString():
当以字符串格式输出类的对象时,默认被自动调用
该函数方法结束必须有一个return语句,且返回的值必须是字符串
格式: Function __toString() {}
__clone():
当类的对象被克隆时自动调用执行