1、构造方法 __construct():
触发条件: 由类生成对象的时候触发
作用:对象的初始化
2、析构方法 __destruct():
触发条件:当对象释放的时候触发
作用:释放或关闭资源
什么时候会销毁对象?
1、当php脚本执行结束(php文件加载完毕),会释放所有的资源
2、通过unset()手动释放对象
unset() 不一定导致对象的释放,当所有引用对象的变量都被unset掉之后,对象才会被释放只要有一个没有被释放,则对象都不会释放
3、克隆方法 __clone();
1、克隆可以产生新对象,不会触发构造方法
触发条件:当克隆对象的时候触发
对象克隆与对象赋值的区别?
克隆:产生新的对象,一个对象发生改变其他的不会改变。彼此之间相互独立
赋值:不会产生新的对象,只是增加对对象的引用,一个发生变化其他的都会随之改变
4、访问方法 __get($name);
触发条件:
当访问类中不可见的成员属性的时候触发
参数:
必须有一个参数,用来接收不可见成员属性的名称
5、设置方法 __set($name,$value);
触发条件:当设置一个类中不可见的成员属性触发该魔术方法
参数:
$name:接收不可见的成员属性名
$value:要设置的值
6、判断方法 __isset($name);
触发条件:使用empty或isset判断一个不可见的成员属性是否为空或是否存在的时候触发
参数: $name:接收要检测的不可见的成员属性名
7、释放方法 __unset($name);
触发场景:当释放一个不可见的成员属性的时候触发该魔术方法
参数: $name:获取你要释放不可见的成员属性名
8、数组访问 __call($name,$args);
触发场景:当你访问不可见的成员方法时触发该魔术方法
参数:
$name:接收访问不可见的成员方法名
$args:接收调用方法时传入的参数,数据类型是数组
9、数组静态访问 __callStatic($name,$args);
触发场景:当你访问不可见的静态成员方法时触发该魔术方法
参数:
$name:接收访问不可见的成员方法名
$args:接收调用方法时传入的参数,数据类型是数组
注意:
1、该魔术方法需为静态方法
2、静态成员方法中只能含有静态成员属性,不可以含有 非静态成员属性
3、类常量是否可以存在于静态方法中?可以
10、字符串访问 __toString();
触发条件:当你echo一个对象的时候会触发该魔术方法
返回值:返回值必须是一个字符串,用于代替对象输出展示
11、序列化 __sleep();
触发条件:当序列化一个对象的时候触发
返回值:类型为一个数组,里面包含要序列化的成员属性名
12、反序列化 __wakeup();
触发条件:当反序列化生成一个对象的时候触发;
返回值:类型为一个对象
13、自动加载类 __autoload($className);
触发条件 : 在使用不存在的类的时候会自动触发该函数
作用 : 实现类的自动加载
参数 : $className 接收类名