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.MVC的模板标签系统(三)
Sep 05 PHP
php mysql索引问题
Jun 07 PHP
php中全局变量global的使用演示代码
May 18 PHP
PHP随机生成随机个数的字母组合示例
Jan 14 PHP
zf框架的数据库追踪器使用示例
Mar 13 PHP
php5.2以下版本无json_decode函数的解决方法
May 25 PHP
php计算两个日期相差天数的方法
Mar 14 PHP
php实现用已经过去多长时间的方式显示时间
Jun 05 PHP
php解析base64数据生成图片的方法
Dec 06 PHP
PHP MYSQL简易交互式站点开发
Dec 27 PHP
详解PHP Swoole与TCP三次握手
May 27 PHP
一次项目中Thinkphp绕过禁用函数的实战记录
Nov 17 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 文章中的远程图片采集到本地的代码
2009/07/30 PHP
PHP基础知识回顾
2012/08/16 PHP
PHP自动生成后台导航网址的最佳方法
2013/08/27 PHP
PHP使用GETDATE获取当前日期时间作为一个关联数组的方法
2015/03/19 PHP
PHP大文件分割分片上传实现代码
2020/12/09 PHP
js常见表单应用技巧
2008/01/09 Javascript
JavaScript表单常用验证集合
2008/01/16 Javascript
js监听输入框值的即时变化onpropertychange、oninput
2011/07/13 Javascript
JS随机生成不重复数据的实例方法
2013/07/17 Javascript
jquery遍历筛选数组的几种方法和遍历解析json对象
2013/12/13 Javascript
详解微信小程序开发之——wx.showToast(OBJECT)的使用
2017/01/18 Javascript
vue实现仿淘宝结账页面实例代码
2017/11/08 Javascript
Nodejs中crypto模块的安全知识讲解
2018/01/03 NodeJs
JavaScript设计模式之工厂模式简单实例教程
2018/07/03 Javascript
webstrom Debug 调试vue项目的方法步骤
2018/07/17 Javascript
webpack 从指定入口文件中提取公共文件的方法
2018/11/13 Javascript
vue-router 2.0 跳转之router.push()用法说明
2020/08/12 Javascript
分享Python字符串关键点
2015/12/13 Python
Python3.4编程实现简单抓取爬虫功能示例
2017/09/14 Python
SVM基本概念及Python实现代码
2017/12/27 Python
使用Python如何测试InnoDB与MyISAM的读写性能
2018/09/18 Python
Python提取特定时间段内数据的方法实例
2019/04/01 Python
详解Python3 pickle模块用法
2019/09/16 Python
Keras使用tensorboard显示训练过程的实例
2020/02/15 Python
jupyter notebook oepncv 显示一张图像的实现
2020/04/24 Python
浅析Python 序列化与反序列化
2020/08/05 Python
爱奇艺VIP会员:大剧抢先看
2018/07/11 全球购物
美国踏板车和轻便摩托车销售网站:Mega Motor Madness
2020/02/26 全球购物
介绍一下EJB的分类及其各自的功能及应用
2016/08/23 面试题
有个性的自我评价范文
2013/11/15 职场文书
大学生涯自我鉴定
2014/01/16 职场文书
业务内勤岗位职责
2014/04/30 职场文书
竞聘演讲稿精彩开头和结尾
2014/05/14 职场文书
营销与策划专业求职信
2014/06/20 职场文书
一份恶作剧的检讨书
2014/09/13 职场文书
python中数组和列表的简单实例
2022/03/25 Python