前言
PHP中把以两个下划线__开头的方法称为魔术方法(Magic methods),这些方法在PHP中充当了举足轻重的作用。 魔术方法包括:
1、__construct(),类的构造函数
2、__destruct(),类的析构函数
3、__call(),在对象中调用一个不可访问方法时调用
4、__callStatic(),用静态方式中调用一个不可访问方法时调用
5、__get(),获得一个类的成员变量时调用
6、__set(),设置一个类的成员变量时调用
7、__isset(),当对不可访问属性调用isset()或empty()时调用
8、__unset(),当对不可访问属性调用unset()时被调用。
9、__sleep(),执行serialize()时,先会调用这个函数
10、__wakeup(),执行unserialize()时,先会调用这个函数
11、__toString(),类被当成字符串时的回应方法
12、__invoke(),调用函数的方式调用一个对象时的回应方法
13、__set_state(),调用var_export()导出类时,此静态方法会被调用。
14、__clone(),当对象复制完成时调用
15、__autoload(),尝试加载未定义的类
16、__debugInfo(),打印所需调试信息
范例
下面让我们以实例的形式向大家讲解下其中几个魔术方法时如何使用的。
一
__construct(),类的构造函数
php中构造方法是对象创建完成后第一个被对象自动调用的方法。在每个类中都有一个构造方法,如果没有显示地声明它,那么类中都会默认存在一个没有参数且内容为空的构造方法。
1、 构造方法的作用
通常构造方法被用来执行一些有用的初始化任务,如对成员属性在创建对象时赋予初始值。
2、 构造方法的在类中的声明格式
3、 在类中声明构造方法需要注意的事项
下面是它的例子:
创建对象$Person1且不带任参数
创建对象$Person2且带参数“小明”
创建对象$Person3且带三个参数
二
__get(),获得一个类的成员变量时调用
在 php 面向对象编程中,类的成员属性被设定为 private 后,如果我们试图在外面调用它则会出现“不能访问某个私有属性”的错误。那么为了解决这个问题,我们可以使用魔术方法 __get()。
魔术方法__get()的作用
我们通过下面的 __get() 的实例来更进一步的连接它吧:
运行结果:
姓名:小明
年龄:50
三
__set(),设置一个类的成员变量时调用
__set() 的作用:
__set( $property, $value )` 方法用来设置私有属性, 给一个未定义的属性赋值时,此方法会被触发,传递的参数是被设置的属性名和值。
请看下面的演示代码:
运行结果:
我叫小红,今年16岁了