PHP中会使用到很多魔术函数和魔术常量:
以Yii2.0中调用model中方法来举例:
use frontend\models\common;
/**此处省略部分代码*/
$common = new common();
$content = Common::$app->getModule()
/**
这里getModule()可以改写为Module函数会调用__get() 获取这个函数
*/
__construct()
实例化对象时被调用,当__construct和以类名为函数名的函数同时存在时,__construct将被调用,另一个不被调用。
__destruct()
当删除一个对象或对象操作终止时被调用
__call()
调用方法,若方法存在则直接调用,若不存在调用__call()
__get()
调用对象属性,若属性存在,返回属性值,若不存在则调用—__get()
__set()
设置对象属性,若属性存在,直接赋值,若不存在调用__set()
__tostring()
打印一个对象的被调用
__clone()
克隆对象的时候被调用,
_sleep()
serialize()
前检查 __sleep()
,首先 在序列化之前,关闭对象可能具有的任何数据库连接等. 第二. 指定对象中需要被序列化的成员属性,如果某个属性比较大而不需要储存下来,可以不把它写进__sleep要返回的数组中,这样该属性就不会被序列化
__wakeup()
unserialize()检查_wakeup()函数调用
__isset()
判断一个对象存在的时候调用
__unset()
unset一个对象的时候调用
__set_state()
调用var_export
时,被调用。用__set_state
的返回值做为var_export
的返回值。
__autoload()
实例化一个对象时,如果对应的类不存在,则该方法被调用。
魔术常量:
_LINE__
返回所在行
__FILE__
返回所在文件
__FUNCTION__
返回定义函数名字
__CLASS__
返回定义类名字
__METHOD__
返回定义方法名