A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© huawei 黑马粉丝团   /  2016-10-7 12:01  /  8410 人查看  /  55 人回复  /   2 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 huawei 于 2017-3-5 11:10 编辑

一网打尽常用的PHP魔术方法
什么是魔术方法?我们举例说明!
游客,如果您要查看本帖隐藏内容请回复


       1)__autoload() :当程序实例化某个类,而该类没有在当前文件中被引入。此时会触发执行__autoload()。程序希望通过该方法,自动引入这个类文件。该方法有一个参数,即就是那个忘记引入的类的名称。__autoload()方法的工作原理是什么?当程序执行到实例化某个类的时候,如果在实例化前没有引入这个类文件,那么就自动执行__autoload()函数。这个函数会根据实例化的类的名称来查找这个类文件的路径,当判断这个类文件路径下确实存在这个类文件后,就执行include或者require来载入该类,然后程序继续执行,如果这个路径下不存在该文件时就提示错误。使用自动载入的魔术函数可以不必要写很多个include或者require函数。

        2)__construct()  :这个是魔术构造方法。构造方法是实例化对象的时候自动执行的方法,作用就是初始化对象。该方法可以没有参数,也可以有多个参数。如果有参数,那么new这个对象的时候要记得写上相应的参数。在php5以前,没有魔术构造方法,普通构造方法是一个跟类名同名的方法来实现构造的。如果一个类中既写了魔术构造方法,又定义了普通构造方法。那么php5以上版本中,魔术方法起作用,普通构造方法不起作用。反之,在php5以前版本中,不认识魔术构造方法,只是把该方法当做普通的方法。

        3)__destruct()  :这个是魔术析构方法。析构方法的作用和构造方法正好相反,是对象被销毁时被自动调用的,作用是释放内存。析构方法没有参数。

        4)__call() :当程序调用一个不存在或不可见的成员方法时,自动触发执行__call()。它有两个参数,分别是未访问到的方法名称和方法的参数。而第二个参数是数组类型。

        5)__get() :当程序调用一个未定义或不可见的成员属性时,自动触发执行__get()。它有一个参数,表示要调用的属性的名称。

        6)__set():当程序试图写入一个不存在或不可见的成员属性时,PHP就会自动执行__set()。它包含两个参数,分别表示属性名称和属性值。

        7)__tostring()  :当程序使用echo或print输出对象时,会自动调用该方法。目的是希望通过该方法将对象转化为字符串,再输出。__tostring() 无参数,但是该方法必须有返回值。

        8)__clone()  :当程序clone一个对象的时候,能触发__clone()方法,程序希望通过这个魔术方法实现:不仅仅单纯地克隆对象,还需要克隆出来的对象拥有原来对象的所有属性和方法。



55 个回复

倒序浏览
666666666666666
回复 使用道具 举报
顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶
回复 使用道具 举报
ewydgiwqejiw
回复 使用道具 举报
测试......
回复 使用道具 举报
6666666666666
回复 使用道具 举报
6666666666666666666666666666
回复 使用道具 举报
PHP魔术方法
回复 使用道具 举报
12222222222222222222222222222222
回复 使用道具 举报
ysp110 初级黑马 2016-11-22 10:40:31
10#
至今不知道怎么用!
回复 使用道具 举报
1615615615165165
回复 使用道具 举报
RE: 一网打尽常用的PHP魔术方法
回复 使用道具 举报
666666666666666666666666666
回复 使用道具 举报
一网打尽常用的PHP魔术方法 [修改]
回复 使用道具 举报
常用的PHP魔术方法 [修改]
回复 使用道具 举报
qsqwrqwrqereqrqerqweqwew
回复 使用道具 举报
学习一下 谢谢 嘻嘻嘻
回复 使用道具 举报
学习一下 谢谢 嘻嘻嘻
回复 使用道具 举报
谢谢分享!!!
回复 使用道具 举报
回复 使用道具 举报
123下一页
您需要登录后才可以回帖 登录 | 加入黑马