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 相关文章推荐
Win7 64位系统下PHP连接Oracle数据库
Aug 20 PHP
php广告加载类用法实例
Sep 23 PHP
php导入大量数据到mysql性能优化技巧
Dec 29 PHP
php实现的任意进制互转类分享
Jul 07 PHP
微信公众平台开发之天气预报功能
Aug 31 PHP
ECshop 迁移到 PHP7版本时遇到的兼容性问题
Feb 15 PHP
php使用pclzip类实现文件压缩的方法(附pclzip类下载地址)
Apr 30 PHP
PHP数组实例详解
Jun 26 PHP
PHP快速排序quicksort实例详解
Sep 28 PHP
PHPMailer发送邮件
Dec 28 PHP
PHP simplexml_load_file()函数讲解
Feb 03 PHP
Laravel 模型使用软删除-左连接查询-表起别名示例
Oct 24 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
调整优化您的LAMP应用程序的5种简单方法
2011/06/26 PHP
php中文乱码怎么办如何让浏览器自动识别utf-8
2014/01/15 PHP
Smarty变量用法详解
2016/05/11 PHP
thinkPHP3.2.3结合Laypage实现的分页功能示例
2018/05/28 PHP
JS去除字符串的空格增强版(可以去除中间的空格)
2009/08/26 Javascript
元素的内联事件处理函数的特殊作用域在各浏览器中存在差异
2011/01/12 Javascript
JQuery EasyUI的使用
2016/02/24 Javascript
使用do...while的方法输入一个月中所有的周日(实例代码)
2016/07/22 Javascript
JS中的==运算: [''] == false —>true
2016/07/24 Javascript
基于JavaScript实现购物网站商品放大镜效果
2016/09/06 Javascript
如何处理JSON中的特殊字符
2016/11/30 Javascript
js+canvas实现动态吃豆人效果
2017/03/22 Javascript
Angular CLI 安装和使用教程
2017/09/13 Javascript
vue将毫秒数转化为正常日期格式的实例
2018/09/16 Javascript
从vue源码看props的用法
2019/01/09 Javascript
Vue使用zTree插件封装树组件操作示例
2019/04/25 Javascript
layui监听工具栏的实例(操作列表按钮)
2019/09/10 Javascript
浅谈vuex为什么不建议在action中修改state
2020/02/02 Javascript
Vue 中使用lodash对事件进行防抖和节流操作
2020/07/26 Javascript
vue使用lodop打印控件实现浏览器兼容打印的方法
2021/02/07 Vue.js
centos下更新Python版本的步骤
2013/02/12 Python
python读写LMDB文件的方法
2018/07/02 Python
详解python3中用HTMLTestRunner.py报ImportError: No module named 'StringIO'如何解决
2019/08/27 Python
python动态视频下载器的实现方法
2019/09/16 Python
Ibatis如何调用存储过程
2015/05/15 面试题
JAVA软件工程师测试题
2014/07/25 面试题
文职个人求职信范文
2013/09/23 职场文书
业务员的岗位职责
2014/03/15 职场文书
C++程序员求职信范文
2014/04/14 职场文书
学校党员对照检查材料
2014/08/28 职场文书
2015年师德师风承诺书
2015/01/22 职场文书
公司出纳岗位职责
2015/03/31 职场文书
交流会主持词
2015/07/02 职场文书
导游词之桂林山水
2019/09/20 职场文书
《初涉尘世》读后感3篇
2020/01/10 职场文书
Python pyecharts案例超市4年数据可视化分析
2022/08/14 Python