php中的魔术变量和魔术方法 - SegmentFault-Erics/learnPHP GitHub Wiki

魔术常量

php中的魔术常量是指php预先定义的一些系统常量,下面就列出php的八大魔术常量、含义及支持版本。

序号 魔术常量 含义 支持版本
1 _FILE_ 文件目录+文件名
2 _LINE_ 当前行值
3 _CLASS_ 当前类名 4.3.0+
4 _FUNCTION_ 当前方法 4.3.0+
5 _METHOD_ 当前类::当前方法 5.0.0+
6 _DIR_ 文件目录 5.3.0+
7 _NAMESPACE_ 当前命名空间 5.3.0+
8 _TRAIT_ 当前trait名 5.4.0+

魔术方法

php的魔术方法可以理解为php的内置全局方法,下面就列出php的魔术方法及作用

序号 魔术方法 作用
1 __sleep() 在对象被序列化操作(serialize())之前对对象内的属性进行操作,需要返回一个数组
2 __wakeup() 类似__sleep(),在反序列化操作(unserialize())之前被执行,不需要返回数组
3 __toString() 处理不支持对象打印的函数直接打印对象,如echo()、print()、printf("%s")
4 __invoke() 当对象以函数的形式调用,会自动加载该类中的__invoke()方法
5 __set_state() 当调用var_export()方法时,自动调用该方法,以数组形式传入,返回该类对象
6 __debugInfo() 当调用var_dump()方法时,自动调用该方法,且返回必须为数组格式
7 __construct() 构造函数:当创建类对象时,先调用该方法,一般用于初始化操作当中
8 __destruct() 析构函数:当对象呗销毁(或者注销)时,该方法被调用,如$obj = NULL;
9 __call($string, $array) 调用类对象的不可用方法时,该方法被调用,两个必带参数,第一个为方法名,第二个为方法参数数组
10 __callStatic($string, $array) 同__call()方法,调用类的不可用静态方法时,该方法被调用
11 __get($name) 获取对象属性不可用时,该方法被调用,一个必带参数
12 __set($name, $value) 对不可访问的属性赋值时,该方法被调用,两个必带参数
13 __isset($name) 对不可访问的属性做isset()、empty()判断时,该方法被调用,一个必带参数
14 __unset($name) 对不可访问的属性做unset()设置时,该方法被调用,一个必带参数
15 __clone() 当使用clone复制对象时,该方法被调用,可以用来修改复制对象的属性