概念
系统在特定的时候自动执行的方法
类比
- __autoload($name)
触发时机:唯一一个卸载类外的方法,当实例化一个对象,而当前脚本没有这个类时,就会自动触发这个方法,该方法会传入当前实例化的类名。
function __autoload($name)
{
include "./" . $name . ".php";
}
- __get(KaTeX parse error: Expected group after '_' at position 7: name)和_̲_set(name,$value)
__get($name)
触发时机:当对象在外部访问私有成员或者受保护的成员属性时触发的方法
应用:开放特定的成员属性给外部,或者当外部获取时不因为成员私有化而报错
__set( n a m e , name, name,value)
触发时机:当对象在外部设置私有或者受保护的成员属性时调用
应用:可以规范外部对象设定值,或者当外部获取时不因为成员私有化而报错
- __unset(KaTeX parse error: Expected group after '_' at position 7: name)和_̲_isset(name)
__unset($name)
触发时机:当对象在外部销毁私有或者受保护的成员属性时调用
应用:开放部分成员属性给外部销毁,或者当外部销毁时不因为成员私有化而报错
__isset($name)
触发时机:当对象在外部判断属性是否被设置时,而成员为私有或者受保护时调用
应用:开发部分成员属性的判断,在__isset()方法里返回isset($this-$name)即可,不设定的话,就算__set()开放了该属性也会返回false,但不会报错
- __construct()构造方法和__destruct()析构方法
__construce()
触发时机:当创建对象的时候调用
应用:初始化对象的成员
__destruct()
触发时机:对象销毁的时候触发的方法
应用:监听对象被销毁时做操作
- __toString()和__debugInfo()
__toString()
触发时机:当使用echo打印对象时调用
应用:当echo对象时可以通过该方法返回指定的字符串
__debugInfo()
触发时机:当使用var_dump打印对象时调用
应用:当var_dump对象时可以通过该方法返回指定的数组
- __call($name, $arguments)和__callStatic()
__call($name, $arguments)
触发时机:当对象调用不存在的成员方法或者不是公共的方法时调用
应用:可以开发部分受保护的方法,也可以通过该方法设定自定义的方法给外部调用
__callStatic($name, $arguments)
触发时机:当对象调用不存在的静态方法或者不是公共的方法时调用
应用:可以开发部分受保护的方法,也可以通过该方法设定自定义的方法给外部调用
- __sleep()和__wakeup()
__sleep()
触发时机:当序列化一个对象时候被调用
应用:可以将指定的属性成员序列化,要将指定的成员名称作为一个数组返回
__wakeup()
触发时机:当反序列化一个对象时候被调用
- __clone()
触发时机:当克隆一个对象的时候调用
应用:可以在这个方法里修改克隆后的属性