PHP:__get()、__set()、__isset()、__unset()、__call()、__callStatic()六个魔术方法
哎呀呀,今天小仓鼠学到了魔术方法,简称魔法,哈哈哈哈,神经病啊~
平时在面试的时候,也会遇到问魔术方法有哪些的问题哦!今天我们来了解一下下~
1、__get()
形式: __get($objName) {}
作用:
(1) 当实例化对象调用一个没有定义的属性时,会自动调用__get方法
例子:
结果:
(2) 用来获取私有成员(private)和保护成员(protected)属性值
例子:
结果:
2、__set()
形式:__set($objName, $val ) {}
作用:
(1) 给未定义的属性赋值
例子:
结果:
(2) 在类外对私有或受保护属性成员进行赋值时,会被自动调用
例子:
结果:
3、__isset()
形式:__isset($objValue) {}
返回结果: 存在返回1,不存在不返回任何数据
作用:
(1) 对public权限的成员属性可以直接使用isset()函数检测值是否被设定
例子:
结果:
(2) 对于设置为 private 或 protected 的成员属性则不行,需要在类里面加上一个 __isset() 方法
例子:
结果:
4、__unset()
形式:__unset($objValue)
作用:
(1) 对public权限的成员属性可以直接使用unset()函数销毁释放内存
例子:
结果: 报此错表明了销毁成功
(2) 设置为 private 或 protected 的成员属性则不行,需要在类里面加上一个 __unset() 方法
例子:
结果:
5、__call()
形式:__call($name, $argument) {}
作用:
(1) 对象调用未定义的函数时,会自动调用
例子:
结果:
(2) 调用Private或protected的方法时,会自动调用
例子:
结果:
6、__callStatic()
形式:__callStatic($name, $argument) {}
注意:该方法必须是静态的才可以哦,否则会报错
自动调用场景:
(1) 对象调用未定义的静态函数时,会自动调用
例子:
结果:
(2) 调用Private或protected的静态方法时,会自动调用
例子:
结果:
总结:
1、 对未定义的属性进行自动调用的魔术方法有:
(1) __get($objName) : 当调用未定义属性时,自动调用
(2)__set($objName) : 当对未定义属性进行赋值时,自动调用
2、 对未定义的方法进行自动调用的魔术方法有:
(1) __call($name, $argument) : 当调用未定义函数时,自动调用
(2) __callStatic($name, $argument) : 当调用未定义静态函数时,自动调用
3、对原属性进行操作的魔术方法有:
(1) __isset($objValue) : 检测属性是否存在
(2) __unset($objValue) :将属性进行销毁
4、调用private(私有的)或protected(受保护)的属性或方法时,各个魔术方法的调用场景:
(1) __get($objName)) : 在类外调用私有和受保护属性时,自动调用
(2) __set($objName)) : 在类外赋值私有和受保护属性时,自动调用
(3) __call($name, $argument)) : 在类外调用私有和受保护方法时,自动调用
(4) __callStatic($name, $argument)) : 在类外调用静态私有和受保护方法时,自动调用
(5) __isset($objValue) : 在类外检测私有和受保护属性时,自动调用
(6) __unset($objValue) : 在类外销毁私有和受保护属性时,自动调用
以上
END
PHP:__get()、__set()、__isset()、__unset()、__call()、__callStatic()六个魔术方法的更多相关文章
- PHP中的魔术方法总结 :__construct, __destruct , __call, __callStatic,__get, __set, __isset, __unset , __sleep, __wakeup, __toStr
PHP中的魔术方法总结 :__construct, __destruct , __call, __callStatic,__get, __set, __isset, __unset , __sleep ...
- PHP中的魔术方法总结 :__construct, __destruct , __call, __callStatic,__get, __set, __isset, __unset , __sleep
PHP中的魔术方法总结 :__construct, __destruct , __call, __callStatic,__get, __set, __isset, __unset , __sleep ...
- __get(),__set(),__isset(),__unset()
__get(),__set(),__isset(),__unset() 在给不可访问属性赋值时,__set()会被调用读取不可访问属性的值时,__get()会被调用 当对不可访问属性调用isset() ...
- PHP中的魔术方法:__construct, __destruct , __call, __callStatic,__get, __set, __isset, __unset , __sleep, __wakeup, __toString, __set_state, __clone and __autoload
1.__get.__set 这两个方法是为在类和他们的父类中没有声明的属性而设计的: __get( $property ) 当调用一个未定义的属性时访问此方法: __set( $property, $ ...
- PHP中的魔术方法总结:__construct,__destruct ,__call,__callStatic,__get,__set,__isset, __unset ,__sleep,__wakeup,__toString,__set_state,__clone,__autoload
1.__get.__set这两个方法是为在类和他们的父类中没有声明的属性而设计的__get( $property ) 当调用一个未定义的属性时访问此方法__set( $property, $value ...
- __get().__set.__isset,__unset魔术方法
一般来说,总是把类的属性定义为 private .这更符合现实的逻辑. 但是对属性的读取和赋值操作非常频繁的,因此在PHP中,预定义了两魔术方法 "__get()"用来获取私有成员属性值的,只有一个参 ...
- php魔术方法__get(),__set(),__isset()的使用
1.魔术方法__get(),__set(),__isset()类: <?php /** * @purpose: 魔术方法 __get() , __set(), __isset() 的使用 * U ...
- PHP十六个魔术方法
PHP中把以两个下划线__开头的方法称为魔术方法(Magic methods),这些方法在PHP中充当了举足轻重的作用. 魔术方法包括: __construct(),类的构造函数 __destruct ...
- PHP之十六个魔术方法详细介绍
PHP中把以两个下划线__开头的方法称为魔术方法(Magic methods),这些方法在PHP中充当了举足轻重的作用.这里进行详细介绍,感兴趣的小伙伴们可以参考一下. PHP中把以两个下划线__开头 ...
随机推荐
- Tomcat分析-启动过程
Server是Tomcat最顶层的容器 Service用于提供服务 Connector用于处理连接相关的事情,并提供Socket与request和response的转换 Container用于封装和管 ...
- linux开机启动服务学习chkconfig命令
选项: --add:增加所指定的系统服务,让chkconfig指令得以管理它,并同时在系统启动的叙述文件内增加相关数据: --del:删除所指定的系统服务,不再由chkconfig指令管理,并同时在系 ...
- 二分搜索 - Binary Search
二分搜索是一种在有序数组中寻找目标值的经典方法,也就是说使用前提是『有序数组』.非常简单的题中『有序』特征非常明显,但更多时候可能需要我们自己去构造『有序数组』.下面我们从最基本的二分搜索开始逐步深入 ...
- java——字典树 Trie
字典树是一种前缀树 package Trie; import java.util.TreeMap; public class Trie { private class Node{ public boo ...
- Linux 进程间通信之管道(pipe),(fifo)
无名管道(pipe) 管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信: 定义函数: int pipe(int f ...
- GO WEB
1.第一个坑的就是,错误信息如下: 比较常见的错误“Connection reset by peer”,该错误和“Connection reset”是有区别的: 服务器返回了“RST”时,如果此时客户 ...
- Unity 双击Esc或者返回退出游戏,有文字提示
第一次点击Esc或者返回,显示提示文字"再次按下返回键退出游戏",在文字消失之前再次点击Esc或者返回,退出游戏. 此脚本挂在Text文字提示上: using UnityEngin ...
- dos文件格式转换为Unix文件格式
做linux开发的,一般还是在windows上装个虚拟机,在windows上开发, 所以就会出现dos文件与unix文件格式不一致,当windows上的文件在linux上用的时候,经常在每行的末尾会出 ...
- SSH密钥登录原理
Client 发送请求 login 请求 --> Server 接受请求 --> 根据 authorized_key 文件中的对应 Client 的 ip 地址的公钥对一串随机数进行加密 ...
- AJAX重点知识的心得体会
下面就为大家带来一篇 AJAX重点知识的心得体会.学习还是有点帮助的,给大家做个参考吧. AJAX是什么? 是Asynchronous Javascript And XML的首字母的缩写, 它不是一门 ...