什么是魔术方法呢?
在PHP中以两个下划线开头的方法,被称为"魔术方法"(Magic methods)。比如之前讲过的__construct(), __destruct (), __clone(),以及__call(),,__get(), __set(),__sleep(), __wakeup(), __toString(), __autoload()等,都是魔术方法。
如果希望PHP调用这些魔术方法,首先必须在类中定义,否则PHP不会执行未创建的魔术方法。大理石构件来图加工
注意:
魔术方法是php中设置好的,所以不能自己去创建,只能用php中本来就存在的,否则会报错。
下面我们就来介绍众多魔术方法中常用的魔术方法。
__get()的作用为:
__get():读取不可访问属性的值(private,protected,不存在)时,php就会执行__get()方法。
我们来看个有关__get()的实例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
上面的实例是我们之前说过的关于类的知识,创建类,创建方法,实例化,最后访问。
下面我们提出一个新的需求,那就是我们要在类的外面直接调用$food。那么有人就会说了,$food是个保护的属性,是不能直接被调用的。但是需求就是要这么做,该怎么办呢?这时候就要用到我们的魔术方法__get()了。看下面的代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
|
在用魔术方法之前,我们需要先判断$pro_name是否存在。因为在上述例子中,$pro_name调用的是food,food是存在的,所以可以调用。但是如果将food换成别的不存在的,比如a,那么,__get()方法会被调用,但是会报错,说a不存在。所以我们要先进行判断。https://www.bzddrive.com/tag/xiaoxingzhixiandaogui_327_1.html