等风来,不如追风去
PHP提供了许多“魔术”方法,这些方法由两个下划线前缀 __
标识。它们充当拦截器,在满足某些条件时会自动调用它们,魔术方法提供了一些极其有用的功能
常见的魔术方法:
1 | __contruct() 当一个对象创建时被调用 |
__construct()
- 对象创建时被调用
1 |
|
__destruct()
- 对象销毁前被调用
1 | <?php |
程序执行完毕后触发 __destruct()
魔术方法
unset对象后,触发
__sleep()
- 在对象被序列化前被调用
1 |
|
__wakeup()
- 在反序列化一个对象成功后,会自动调用该方法
1 |
|
__toString()
- 当一个对象被当做字符串使用时被调用
- 该方法没有任何参数,也不会传递任何参数,但该方法必须有一个返回值,该返回值必须是字符串,且只能是字符串
1 |
|
__get()
- 获取类的私有属性或不存在的属性时调用此方法
- get函数需要设置有一个参数
1、获取类的私有属性
2、获取不存在的属性
__set()
- 给类中不存在的属性或不可访问的属性赋值
- set函数需要设置有两个参数
1 |
|
1、给私有属性赋值
2、给不存在的属性赋值
__invoke()
- 调用函数的方式调用一个对象时的回应方法
1 |
|
__call
- 调用类中不存在的方法或私有方法时执行
- 该方法有两个参数,第一个参数是调用的那个不存在的 方法名 ,第二个参数是一个数组 ( array ) ,是传递给不存在方法的所有参数组成的数组
1 |
|
1、调用类中的私有方法
2、调用类中不存在的方法
__callStatic()
- 在调用类的一个不存在的静态方法或该方法不可访问(私有方法)时自动调用,作用和原型都类似于
__call()
- 该方法同样有两个参数,第一个参数是调用的那个不存在的静态方法名 ,第二个参数是一个数组 ( array ) ,是传递给不存在静态方法的所有参数组成的数组
- 该方法要设置为静态方法(前面要加上一个static),否则会报
Warning
警告
1 |
|
1、调用私有静态方法
2、调用不存在的静态方法