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 相关文章推荐
玩转图像函数库―常见图形操作
Sep 03 PHP
PHP使用者状态管理功能的应用
Oct 09 PHP
一个用于网络的工具函数库
Oct 09 PHP
PHP+ACCESS 文章管理程序代码
Jun 21 PHP
PHP调用Linux的命令行执行文件压缩命令
Jan 27 PHP
php制作unicode解码工具(unicode编码转换器)代码分享
Dec 24 PHP
php 字符串压缩方法比较示例
Jan 23 PHP
PHP 实现判断用户是否手机访问
Jan 21 PHP
PHP实现返回JSON和XML的类分享
Jan 28 PHP
使用PHP uniqid函数生成唯一ID
Nov 18 PHP
PHP实现对文件锁进行加锁、解锁操作的方法
Jul 04 PHP
laravel框架学习笔记之组件化开发实现方法
Feb 01 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
array_multisort实现PHP多维数组排序示例讲解
2011/01/04 PHP
PHP下获取上个月、下个月、本月的日期(strtotime,date)
2014/02/02 PHP
PHP SPL标准库中的常用函数介绍
2015/05/11 PHP
thinkphp3.x中session方法的用法分析
2016/05/20 PHP
Ubuntu server 11.04安装memcache及php使用memcache来存储session的方法
2016/05/31 PHP
PHP中利用sleep函数实现定时执行功能实现代码
2016/08/25 PHP
php中strtotime函数性能分析
2016/11/20 PHP
Laravel中9个不经常用的小技巧汇总
2019/04/16 PHP
jquery实现的元素的left增加N像素 鼠标移开会慢慢的移动到原来的位置
2010/03/21 Javascript
Javascript 静态页面实现随机显示广告的办法
2010/11/17 Javascript
FF火狐下获取一个元素同类型的相邻元素实现代码
2012/12/15 Javascript
js 获取屏幕各种宽高的方法(浏览器兼容)
2013/05/15 Javascript
js取消单选按钮选中并判断对象是否为空
2013/11/14 Javascript
22点关于jquery性能优化的建议
2014/05/28 Javascript
javascript对象的相关操作小结
2016/05/16 Javascript
AngularJS基础 ng-switch 指令简单示例
2016/08/03 Javascript
总结Javascript中的隐式类型转换
2016/08/24 Javascript
weui框架实现上传、预览和删除图片功能代码
2017/08/24 Javascript
javascript计算渐变颜色的实例
2017/09/22 Javascript
vue axios 表单提交上传图片的实例
2018/03/16 Javascript
详解关于微信setData回调函数中的坑
2019/02/18 Javascript
Vue实现剪切板图片压缩功能
2020/02/04 Javascript
[04:40]DOTA2-DPC中国联赛1月26日Recap集锦
2021/03/11 DOTA
Python语言描述随机梯度下降法
2018/01/04 Python
对Python中list的倒序索引和切片实例讲解
2018/11/15 Python
Python提取支付宝和微信支付二维码的示例代码
2019/02/15 Python
微软日本官方网站:Microsoft日本
2017/11/26 全球购物
亚洲在线旅行门户网站:Expedia.com.hk(智游网)
2020/04/14 全球购物
linux面试题参考答案(10)
2016/10/26 面试题
日语专业毕业生自荐信
2013/11/11 职场文书
大学生职业规划论文
2014/01/11 职场文书
保护环境倡议书100字
2014/05/19 职场文书
股指期货心得体会
2014/09/10 职场文书
学校法制宣传日活动总结
2014/11/01 职场文书
2015年项目经理工作总结
2015/04/30 职场文书
Java GUI编程菜单组件实例详解
2022/04/07 Java/Android