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 文件扩展名 获取函数
Jun 03 PHP
PHP计划任务、定时执行任务的实现代码
Apr 23 PHP
PHP 安全检测代码片段(分享)
Jul 05 PHP
php冒泡排序、快速排序、快速查找、二维数组去重实例分享
Apr 24 PHP
smarty模板引擎之内建函数用法
Mar 30 PHP
微信公众平台开发之天气预报功能
Aug 31 PHP
PHP CURL或file_get_contents获取网页标题的代码及两者效率的稳定性问题
Nov 30 PHP
PHP中的函数声明与使用详解
May 27 PHP
Laravel多用户认证系统示例详解
Mar 13 PHP
PHP检查文件是否存在,不存在自动创建及读取文件内容操作示例
Jan 23 PHP
YII2框架中日志的配置与使用方法实例分析
Mar 18 PHP
PHP中echo与print区别点整理
Mar 09 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 park、unpark、ord 函数使用方法(二进制流接口应用实例)
2010/10/19 PHP
php实现文件下载简单示例(代码实现文件下载)
2014/03/10 PHP
PHP查询并删除数据库多列重复数据的方法(利用数组函数实现)
2016/02/23 PHP
PHP模板引擎Smarty自定义变量调解器用法
2016/04/11 PHP
php使用flock阻塞写入文件和非阻塞写入文件的实例讲解
2017/07/10 PHP
javascript OFFICE控件测试代码
2009/12/08 Javascript
document.getElementById为空或不是对象的解决方法
2010/01/24 Javascript
JavaScript中判断函数是new还是()调用的区别说明
2011/04/07 Javascript
JQuery优缺点分析说明
2011/04/10 Javascript
javascript实现的DES加密示例
2013/10/30 Javascript
PHPExcel中的一些常用方法汇总
2015/01/23 Javascript
jquery计算鼠标和指定元素之间距离的方法
2015/06/26 Javascript
javascript顺序加载图片的方法
2015/07/18 Javascript
10个很棒的jQuery代码片段
2015/09/24 Javascript
Backbone.js框架中Model与Collection的使用实例
2016/05/07 Javascript
JavaScript中捕获/阻止捕获、冒泡/阻止冒泡方法
2016/12/07 Javascript
vue2的todolist入门小项目的详细解析
2017/05/11 Javascript
微信小程序注册60s倒计时功能 使用JS实现注册60s倒计时功能
2017/08/16 Javascript
详解Angular-ui-BootStrap组件的解释以及使用
2018/07/13 Javascript
jQuery实现经典的网页3D轮播图封装功能【附源码下载】
2019/02/15 jQuery
element跨分页操作选择详解
2020/06/29 Javascript
[01:27:30]LGD vs Newbee 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/19 DOTA
python实现汉诺塔递归算法经典案例
2021/03/01 Python
Pandas标记删除重复记录的方法
2018/04/08 Python
redis之django-redis的简单缓存使用
2018/06/07 Python
浅谈django orm 优化
2018/08/18 Python
Html5新标签datalist实现输入框与后台数据库数据的动态匹配
2017/05/18 HTML / CSS
教师自荐信
2013/12/10 职场文书
教师求职信
2014/06/17 职场文书
优秀中职教师事迹材料
2014/08/26 职场文书
纪律教育学习月活动总结
2014/08/27 职场文书
2014年学习厉行节约反对浪费思想汇报
2014/09/10 职场文书
司机工作自我鉴定
2014/09/19 职场文书
应聘教师求职信范文
2015/03/20 职场文书
如何使用 resize 实现图片切换预览功能
2021/08/23 HTML / CSS
python turtle绘图命令及案例
2021/11/23 Python