php 魔术方法使用说明

 更新时间:2009年10月20日 21:56:31   作者:  
一些在PHP叫魔术方法的函数,在这里介绍一下:其实在一般的应用中,我们都需要用到他们!!
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 实现公历日期与农历日期的互转换

    这篇文章主要介绍了PHP 实现公历日期与农历日期的互转换的相关资料,希望通过本文大家能帮助到大家,需要的朋友可以参考下
    2017-09-09
  • php中RESTful API的使用方法详解

    php中RESTful API的使用方法详解

    RESTful API是一种软件架构风格,它将资源(Resource)作为核心概念,并通过一组统一的接口对资源进行操作,下面我们就来学习一下RESTful API在PHP中的具体使用吧
    2023-11-11
  • php下网站防IP攻击代码,超级实用

    php下网站防IP攻击代码,超级实用

    现在做外国网络,访问量越来越高了,最近有很多不良IP不停的进行攻击,由于不是自己的主机,所以,只能通过代码去阻止它们。
    2010-10-10
  • php 错误处理经验分享

    php 错误处理经验分享

    在创建脚本和 web 应用程序时,错误处理是一个重要的部分。如果您的代码缺少错误检测编码,那么程序看上去很不专业,也为安全风险敞开了大门
    2011-10-10
  • php中laravel调度执行错误解决方法

    php中laravel调度执行错误解决方法

    在本篇内容里小编给大家整理的是一篇关于php中laravel调度执行错误解决方法,对此有兴趣的朋友们可以学习参考下。
    2021-02-02
  • PHP安全性漫谈

    PHP安全性漫谈

    本文所讨论的安全性环境是在Linux+Apache+Mysql+PHP。超出此范围的安全性问题不在本文范畴之内
    2012-06-06
  • php递归实现无限分类的方法

    php递归实现无限分类的方法

    这篇文章主要介绍了php递归实现无限分类的方法,涉及php递归遍历的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07
  • php数组函数序列之asort() - 对数组的元素值进行升序排序,保持索引关系

    php数组函数序列之asort() - 对数组的元素值进行升序排序,保持索引关系

    asort() 函数对数组进行排序并保持索引关系。主要用于对那些单元顺序很重要的结合数组进行排序。可选的第二个参数包含了附加的排序标识
    2011-11-11
  • KindEditor在php环境下上传图片功能集成的方法示例

    KindEditor在php环境下上传图片功能集成的方法示例

    这篇文章主要介绍了PHP环境下如何实现使用KindEditor编辑器上传图片,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • 从0构建Oauth2Server服务 之Token 编解码

    从0构建Oauth2Server服务 之Token 编解码

    这篇文章主要为大家介绍了从0构建Oauth2Server服务之Token编解码详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-05-05

最新评论