php 魔术方法使用说明


Posted in PHP onOctober 20, 2009

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;程序输出:我被克隆了!

PHP 相关文章推荐
第八节 访问方式 [8]
Oct 09 PHP
IIS6的PHP最佳配置方法
Mar 19 PHP
php获得当前的脚本网址
Dec 10 PHP
PHP 分页类(模仿google)-面试题目解答
Sep 13 PHP
发款php蜘蛛统计插件只要有mysql就可用
Oct 12 PHP
php目录操作函数之获取目录与文件的类型
Dec 29 PHP
SESSION信息保存在哪个文件目录下以及能够用来保存什么类型的数据
Jun 17 PHP
php中\r \r\n \t的区别示例介绍
Feb 08 PHP
php+xml编程之xpath的应用实例
Jan 24 PHP
浅析PHP中的i++与++i的区别及效率
Jun 15 PHP
解决微信授权回调页面域名只能设置一个的问题
Dec 11 PHP
PhpSpreadsheet设置单元格常用操作汇总
Nov 13 PHP
关于Appserv无法打开localhost问题的解决方法
Oct 16 #PHP
php foreach、while性能比较
Oct 15 #PHP
php侧拉菜单 漂亮,可以向右或者向左展开,支持FF,IE
Oct 15 #PHP
php 数学运算验证码实现代码
Oct 11 #PHP
用mysql触发器自动更新memcache的实现代码
Oct 11 #PHP
基于OpenCV的PHP图像人脸识别技术
Oct 11 #PHP
PHP 身份验证方面的函数
Oct 11 #PHP
You might like
自己写的兼容低于PHP 5.5版本的array_column()函数
2014/10/24 PHP
WordPress中用于更新伪静态规则的PHP代码实例讲解
2015/12/18 PHP
php while循环控制的简单实例
2016/05/30 PHP
PHP命名空间与自动加载类详解
2018/09/04 PHP
JQuery 无废话系列教程(一) jquery入门 [推荐]
2009/06/23 Javascript
XENON基于JSON变种
2010/07/27 Javascript
jQuery Tools tooltip使用说明
2012/07/14 Javascript
基于jquery中children()与find()的区别介绍
2013/04/26 Javascript
原生JavaScript实现合并多个数组示例
2014/09/21 Javascript
基于JavaScript如何实现ajax调用后台定义的方法
2015/12/29 Javascript
JS判断输入的字符串是否是数字的方法(正则表达式)
2016/11/29 Javascript
Vue.js双向绑定操作技巧(初级入门)
2016/12/27 Javascript
angularJs使用$watch和$filter过滤器制作搜索筛选实例
2017/06/01 Javascript
Ionic2开发环境搭建教程
2020/08/20 Javascript
Javascript之图片的延迟加载的实例详解
2017/07/24 Javascript
百度地图去掉marker覆盖物或者去掉maker的label文字方法
2018/01/26 Javascript
Vue下拉框回显并默认选中随机问题
2018/09/06 Javascript
原生js检测页面加载完毕的实例
2018/09/11 Javascript
从Vuex中取出数组赋值给新的数组,新数组push时报错的解决方法
2018/09/18 Javascript
node.js命令行教程图文详解
2019/05/27 Javascript
微信小程序wx.navigateTo中events属性实现页面间通信传值,数据同步
2019/07/13 Javascript
AntV F2和vue-cli构建移动端可视化视图过程详解
2019/10/08 Javascript
[01:20]2018DOTA2亚洲邀请赛总决赛战队Mineski晋级之路
2018/04/07 DOTA
解决Python下json.loads()中文字符出错的问题
2018/12/19 Python
Python正则匹配判断手机号是否合法的方法
2020/12/09 Python
pycharm创建scrapy项目教程及遇到的坑解析
2019/08/15 Python
Python 创建守护进程的示例
2020/09/29 Python
美国领先的精品家居照明和装饰产品在线零售商:LightsOnline.com
2018/01/23 全球购物
美术专业个人自我评价
2014/01/18 职场文书
车间主任岗位职责范本
2015/04/08 职场文书
学生通报表扬范文
2015/05/04 职场文书
2015年七年级班主任工作总结
2015/05/21 职场文书
民事诉讼代理词
2015/05/25 职场文书
简单了解 MySQL 中相关的锁
2021/05/25 MySQL
Spring Boot项目传参校验的最佳实践指南
2022/04/05 Java/Android
基于Apache Hudi在Google云构建数据湖平台的思路详解
2022/04/07 Servers