定义:
PHP类中以两个下画线“__”开头的方法被称为魔术方法。
分类:
例如:构造方法:__construct;析构方法:__destruct;动态重载:__set()、__get()、__call()、__callStatic();对象的克隆:__clone()
应用场景:
1、当程序试图修改一个不存在或不可见的类属性时,PHP引擎将会调用__set()方法,当然前提是该方法在类中被定义。__set()的定义格式如下:
function __set($name,$value){
//实现细节
}
其中,$name是动态创建的变量名,$value是该变量的值。
2、当程序试图读取一个不存在或不可见的类属性时,PHP引擎将会调用__get()方法,当然前提是该方法在类中被定义。__get()的定义格式如下:
function __get($name){
//实现细节
}
其中,$name是动态创建的变量名。
3、当程序试图调用一个不存在或不可见的类方法时,PHP引擎将会调用__call()方法,当然前提是该方法在类中被定义。__call()方法的定义格式如下:
function __call($name,$args){
//实现细节
}
其中,$name是动态创建的方法名,$args是该方法的参数,以数组的形式存在。
4、从PHP5.3.0开始,可以使用__callStatic()动态创建静态方法。__callStatic()的定义格式如下:
function __callStatic($name,$args){
//实现细节
}
其中,$name是动态创建的方法名,$args是该方法的参数,以数组的形式存在。
5、__clone()方法一旦被定义,类在被复制时就会自动调用它,这样我们就可以在__clone()方法中给引用属性重新开辟内存。__clone()定义格式如下:
function __clone(){
//实现细节
}