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 相关文章推荐
php4的session功能评述(三)
Oct 09 PHP
php下使用无限生命期Session的方法
Mar 16 PHP
在php和MySql中计算时间差的方法
Apr 22 PHP
PHP提示Deprecated: mysql_connect(): The mysql extension is deprecated的解决方法
Aug 28 PHP
PHP实现文件下载详解
Nov 27 PHP
php可生成缩略图的文件上传类实例
Dec 17 PHP
php实现读取手机客户端浏览器的类
Jan 09 PHP
php实现excel中rank函数功能的方法
Jan 20 PHP
PHP+MySQL实现的简单投票系统实例
Feb 24 PHP
浅析PHP7新功能及语法变化总结
Jun 17 PHP
Yii2框架自定义验证规则操作示例
Feb 08 PHP
php 中的信号处理操作实例详解
Mar 04 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高级编程-函数-郑阿奇
2011/07/04 PHP
javascript高亮效果的二种实现方法
2008/09/14 Javascript
JavaScript获取GridView中用户点击控件的行号,列号
2009/04/14 Javascript
jquery Mobile入门—多页面切换示例学习
2013/01/08 Javascript
alert和confirm功能介绍
2014/05/21 Javascript
node.js中的buffer.Buffer.isBuffer方法使用说明
2014/12/14 Javascript
Jquery 实现checkbox全选方法
2015/01/28 Javascript
jQuery实现的超简单点赞效果实例分析
2015/12/31 Javascript
jQuery ajax分页插件实例代码
2016/01/27 Javascript
JS获取checkbox的个数简单实例
2016/08/19 Javascript
seajs中最常用的7个功能、配置示例
2017/10/10 Javascript
ES6解构赋值的功能与用途实例分析
2017/10/31 Javascript
微信小程序显示下拉列表功能【附源码下载】
2017/12/12 Javascript
利用npm 安装删除模块的方法
2018/05/15 Javascript
VuePress 静态网站生成方法步骤
2019/02/14 Javascript
D3.js(v3)+react 实现带坐标与比例尺的散点图 (V3版本)
2019/05/09 Javascript
基于mpvue的简单弹窗组件mptoast使用详解
2019/08/02 Javascript
Laravel 如何在blade文件中使用Vue组件的示例代码
2020/06/28 Javascript
[02:46]2014DOTA2国际邀请赛 选手为你解读比赛MVP充满梦想
2014/07/09 DOTA
python解析中国天气网的天气数据
2014/03/21 Python
python 使用get_argument获取url query参数
2017/04/28 Python
使用python爬取微博数据打造一颗“心”
2019/06/28 Python
在python中,使用scatter绘制散点图的实例
2019/07/03 Python
Python利用神经网络解决非线性回归问题实例详解
2019/07/19 Python
手把手教你进行Python虚拟环境配置教程
2020/02/03 Python
凯普林包包西班牙官网:Kipling西班牙
2019/04/12 全球购物
酒店出纳岗位职责
2013/12/29 职场文书
买房委托公证书
2014/04/08 职场文书
企业法人授权委托书范本
2014/09/23 职场文书
2015年财务人员工作总结
2015/04/10 职场文书
2015年档案管理员工作总结
2015/05/13 职场文书
教师节班会开场白
2015/06/01 职场文书
任命书格式模板
2015/09/22 职场文书
实操Python爬取觅知网素材图片示例
2021/11/27 Python
win11系统中dhcp服务异常什么意思? Win11 DHCP服务异常修复方法
2022/04/08 数码科技
MySQL的prepare使用以及遇到的bug
2022/05/11 MySQL