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 相关文章推荐
PHP动态创建Web站点的方法
Aug 14 PHP
php缓冲 output_buffering的使用详解
Jun 13 PHP
Yii框架中 find findAll 查找出制定的字段的方法对比
Sep 10 PHP
Mac系统下使用brew搭建PHP(LNMP/LAMP)开发环境
Mar 03 PHP
php计算两个坐标(经度,纬度)之间距离的方法
Apr 17 PHP
PHP中file_exists使用中遇到的问题小结
Apr 05 PHP
PHP引用返回用法示例
May 28 PHP
浅谈PHP错误类型及屏蔽方法
May 27 PHP
php表单处理操作
Nov 16 PHP
laravel中短信发送验证码的实现方法
Apr 25 PHP
PHP等比例压缩图片的实例代码
Jul 26 PHP
Thinkphp 框架扩展之行为扩展原理与实现方法分析
Apr 23 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
1 Tube Radio
2021/03/02 无线电
zend optimizer在wamp的基础上安装图文教程
2013/10/26 PHP
PHP模拟登陆163邮箱发邮件及获取通讯录列表的方法
2015/03/07 PHP
PHP中创建和验证哈希的简单方法实探
2015/07/06 PHP
Yii开启片段缓存的方法
2016/03/28 PHP
PHP在同一域名下两个不同的项目做独立登录机制详解
2017/09/22 PHP
js 剪切板应用clipboardData详细解析
2013/12/17 Javascript
js数组中如何随机取出一个值
2014/06/13 Javascript
node.js超时timeout详解
2014/11/26 Javascript
DOM基础教程之事件类型
2015/01/20 Javascript
jQuery中ScrollTo用法示例
2016/09/04 Javascript
vue.js中$watch的用法示例
2016/10/04 Javascript
Node.js与MySQL交互操作及其注意事项
2016/10/05 Javascript
Bootstrap 模态框(Modal)插件代码解析
2016/12/21 Javascript
JS实现按钮颜色切换效果
2020/09/05 Javascript
Vue Promise的axios请求封装详解
2018/08/13 Javascript
原生JS实现轮播图效果
2018/10/12 Javascript
Vue项目引发的「过滤器」使用教程
2019/03/12 Javascript
简单易扩展可控性强的Jquery转盘抽奖程序
2019/03/16 jQuery
使用layer弹窗,制作编辑User信息页面的方法
2019/09/27 Javascript
[04:32]玩具屠夫中文语音节选
2020/08/23 DOTA
python实现dict版图遍历示例
2014/02/19 Python
Python输出PowerPoint(ppt)文件中全部文字信息的方法
2015/04/28 Python
两个命令把 Vim 打造成 Python IDE的方法
2016/03/20 Python
详解python中executemany和序列的使用方法
2017/08/12 Python
简单了解python高阶函数map/reduce
2019/06/28 Python
Django实现CAS+OAuth2的方法示例
2019/10/30 Python
Python通过VGG16模型实现图像风格转换操作详解
2020/01/16 Python
PyTorch中的拷贝与就地操作详解
2020/12/09 Python
英国在线泳装店:Simply Swim
2019/05/05 全球购物
俄罗斯最大的隐形眼镜销售网站:Ochkov.Net
2021/02/07 全球购物
新闻专业本科生的自我评价分享
2013/11/20 职场文书
营销专业应届生求职信
2013/11/26 职场文书
机关单位动员会主持词
2014/03/20 职场文书
2016反腐倡廉警示教育心得体会
2016/01/13 职场文书
大学生各类奖学金申请书
2019/06/24 职场文书