php 魔术方法使用说明详细
PHP5.0后,php面向对象提成更多方法,使得php更加的强大!!
一些在PHP叫魔术方法的函数,在这里介绍一下:其实在一般的应用中,我们都需要用到他们!!
1.__construct() 当实例化一个对象的时候,这个对象的这个方法首先被调用。
Java代码
class Test { function __construct() { echo "before"; } } $t = new Test();
class Test { function __construct() { echo "before"; } } $t = new Test();
输出是:
start
我们知道php5对象模型 和类名相同的函数是类的构造函数,那么如果我们同时定义构造函数和__construct()方法的话,php5会默认调用构造函数而不会调用__construct()函数,所以__construct()作为类的默认的构造函数
2.__destruct() 当删除一个对象或对象操作终止的时候,调用该方法。
Java代码
class Test { function __destruct() { echo "end"; } } $t = new Test();将会输出end
class Test { function __destruct() { echo "end"; } } $t = new Test();将会输出end
我们就可以在对象操作结束的时候进行释放资源之类的操作
3.__get() 当试图读取一个并不存在的属性的时候被调用。
如果试图读取一个对象并不存在的属性的时候,PHP就会给出错误信息。如果在类里添加__get方法,并且我们可以用这个函数实现类似java中反射的各种操作。
Java代码
class Test { public function __get($key) { echo $key . " 不存在"; } } $t = new Test(); echo $t->name; 就会输出:name 不存在
class Test { public function __get($key) { echo $key . " 不存在"; } } $t = new Test(); echo $t->name; 就会输出:name 不存在
4.__set() 当试图向一个并不存在的属性写入值的时候被调用。
Java代码
class Test { public function __set($key,$value) { echo '对'.$key . "附值".$value; } } $t = new Test(); $t->name = "aninggo"; 就会输出:对 name 附值 aninggo
class Test { public function __set($key,$value) { echo '对'.$key . "附值".$value; } } $t = new Test(); $t->name = "aninggo"; 就会输出:对 name 附值 aninggo
5.__call() 当试图调用一个对象并不存在的方法时,调用该方法。
Java代码
class Test { public function __call($Key, $Args) { echo "您要调用的 {$Key} 方法不存在。你传入的参数是:" . print_r($Args, true); } } $t = new Test(); $t->getName(aning,go);
class Test { public function __call($Key, $Args) { echo "您要调用的 {$Key} 方法不存在。你传入的参数是:" . print_r($Args, true); } } $t = new Test(); $t->getName(aning,go);
程序将会输出:
Java代码
您要调用的 getName 方法不存在。参数是:Array
(
[0] => aning
[1] => go
)
您要调用的 getName 方法不存在。参数是:Array
(
[0] => aning
[1] => go
)
6.__toString() 当打印一个对象的时候被调用
这个方法类似于java的toString方法,当我们直接打印对象的时候回调用这个函数
class Test { public function __toString() { return "打印 Test"; } } $t = new Test(); echo $t;
运行echo $t;的时候,就会调用$t->__toString();从而输出
打印 Test
7.__clone() 当对象被克隆时,被调用
class Test { public function __clone() { echo "我被复制了!"; } }$t = new Test(); $t1 = clone $t;程序输出:我被克隆了!
详细出处参考:http://www.jb51.net/article/20494.htm
转载于:https://blog.51cto.com/qinlong/616654
php 魔术方法使用说明详细相关推荐
- PHP中的方形按钮怎么敲,php 魔术方法使用说明
php 魔术方法使用说明 2021-01-23 20:13:0612 PHP5.0后,php面向对象提成更多方法,使得php更加的强大!! 一些在PHP叫魔术方法的函数,在这里介绍一下:其实在一般的应 ...
- mysql 魔术设置_PHP之十六个魔术方法详细介绍
PHP中把以两个下划线__开头的方法称为魔术方法(Magic methods),这些方法在PHP中充当了举足轻重的作用. 魔术方法包括: __construct(),类的构造函数 __destruct ...
- Python最会变魔术的魔术方法,我觉得是它
在上篇文章中,我有一个核心的发现:Python 内置类型的特殊方法(含魔术方法与其它方法)由 C 语言独立实现,在 Python 层面不存在调用关系. 但是,文中也提到了一个例外:一个非常神秘的魔术方 ...
- php超全局变量,魔术常量,魔术方法
整理了下关于php的基础知识,参考了些资料,如下: 超全局变量 超全局变量 - 超全局变量是在全部作用域中始终可用的内置变量: $GLOBALS $GLOBALS - 引用全局作用域中可用的全部变量 ...
- php _set魔术方法的用法,PHP魔术方法__GET、__SET使用实例
这篇文章主要介绍了PHP魔术方法__GET.__SET使用实例,本文在代码中做了详细的注释,需要的朋友可以参考下 __get() - 读取不可访问属性的值时,__get() 会被调用. __set() ...
- 介绍Python的魔术方法 - Magic Method
前言 在Python中,所有以__双下划线包起来的方法,都统称为"魔术方法".比如我们接触最多的__init__. 有些魔术方法,我们可能以后一辈子都不会再遇到了,这里也就只是简单 ...
- 魔术方法 类 序列化_Java序列化魔术方法及其示例使用
魔术方法 类 序列化 在上一篇文章中, 您需要了解有关Java序列化的所有知识 ,我们讨论了如何通过实现Java序列化来启用类的可序列化性. Serializable接口. 如果我们的类未实现Seri ...
- php 魔术方法 多继承,PHP通过魔术方法实现多继承与重载
PHP所提供的"重载"(overloading)是指动态地"创建"类属性和方法.我们是通过魔术方法(magic methods)来实现的.当调用当前环境下未定义 ...
- python创建实例会调用哪些魔术方法_Python最会变魔术的魔术方法,我觉得是它!...
作者:豌豆花下猫 来源:Python猫 在,我有一个核心的发现:Python 内置类型的特殊方法(含魔术方法与其它方法)由 C 语言独立实现,在 Python 层面不存在调用关系. 但是,文中也提到了 ...
最新文章
- 使用VisualStudio2010连接CodePlex进行代码管理
- FPGAtestbench中如何产生差分时钟
- DNS(二)--正反解析及主从配置
- 一个小灯泡引发大论战:千万粉丝科普up主翻车,伊朗“唐马儒”、李永乐等下场,30万公里导线引百万网友围观...
- swagger导出excel文档_将Swagger2文档导出为HTML或markdown等格式离线阅读
- 刘歧:让人生不留遗憾
- 使用反射将DataTable的数据转成实体类
- android中gradle的作用,Gradle 之 Android 中的应用
- 电脑生成siri语音_米家智能台灯1S全新升级,支持小爱和Siri的语音控制
- 关闭多个activity
- Jupyter Notebook中未显示Conda环境
- 2022年低压电工题库及模拟考试
- 【机器学习手册】【1】熟练使用向量矩阵和数组 —— 二维矩阵叉乘公式
- Qt ui 到底是什么?
- ns3网络模拟器使用相关问题
- 高盐废水处理工艺——料液精制与除杂
- LeetCode 417.太平洋大西洋水流问题
- 盘点美国最出人意料的20种高薪职业
- 中国时光之美:旅途中的二十…
- [原创]中国象棋翻翻棋,休闲,对战,娱乐,小游戏,jQuery小游戏,下载即用,代码注释全(附源码)