PHP 魔术函数使用说明


Posted in PHP onMay 14, 2010

1。__construct()
实例化对象时被调用,
当__construct和以类名为函数名的函数同时存在时,__construct将被调用,另一个不被调用。

2。__destruct()

当删除一个对象或对象操作终止时被调用。

3。__call()
对象调用某个方法,
若方法存在,则直接调用;
若不存在,则会去调用__call函数。

4。__get()
读取一个对象的属性时,
若属性存在,则直接返回属性值;
若不存在,则会调用__get函数。

5。__set()
设置一个对象的属性时,
若属性存在,则直接赋值;
若不存在,则会调用__set函数。

6。__toString()

打印一个对象的时被调用。如echo $obj;或print $obj;

7。__clone()

克隆对象时被调用。如:$t=new Test();$t1=clone $t;

8。__sleep()

serialize之前被调用。若对象比较大,想删减一点东东再序列化,可考虑一下此函数。

9。__wakeup()

unserialize时被调用,做些对象的初始化工作。

10。__isset()
检测一个对象的属性是否存在时被调用。如:isset($c->name)。

11。__unset()
unset一个对象的属性时被调用。如:unset($c->name)。

12。__set_state()
调用var_export时,被调用。用__set_state的返回值做为var_export的返回值。

13。__autoload()
实例化一个对象时,如果对应的类不存在,则该方法被调用。

魔术常量

1。__LINE__
返回文件中的当前行号。

2。__FILE__
返回文件的完整路径和文件名。如果用在包含文件中,则返回包含文件名。自 PHP 4.0.2 起,__FILE__ 总是包含一个绝对路径,而在此之前的版本有时会包含一个相对路径。

3。__FUNCTION__
返回函数名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返回该函数被定义时的名字(区分大小写)。在 PHP 4 中该值总是小写字母的。

4。__CLASS__
返回类的名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返回该类被定义时的名字(区分大小写)。在 PHP 4 中该值总是小写字母的。

5。__METHOD__
返回类的方法名(PHP 5.0.0 新加)。返回该方法被定义时的名字(区分大小写)。

(1)初识魔术方法
Php5.0发布以来为我们提供了很多面向对象的特性,尤其是为我们提供了好多易用的魔术方法,这些魔术方法可以让我们简化我们的编码,更好的设计我们的系统。今天我们就来认识下php5.0给我们提供的魔术方法。

3,__get() 当试图读取一个并不存在的属性的时候被调用。
如果试图读取一个对象并不存在的属性的时候,PHP就会给出错误信息。如果在类里添加__get方法,并且我们可以用这个函数实现类似java中反射的各种操作。
class Test
{
public function __get($key)
{
echo $key . ” 不存在”;
}
}

$t = new Test();
echo $t->name;

就会输出:
name 不存在

4,__set() 当试图向一个并不存在的属性写入值的时候被调用。
class Test
{
public function __set($key,$value)
{
echo ‘对'.$key . “附值”.$value;
}
}

$t = new Test();
$t->name = “aninggo”;

就会输出:
对 name 附值 aninggo
5,__call() 当试图调用一个对象并不存在的方法时,调用该方法。
class Test
{
public function __call($Key, $Args)
{
echo “您要调用的 {$Key} 方法不存在。你传入的参数是:” . print_r($Args, true);
}
}

$t = new Test();
$t->getName(aning,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 相关文章推荐
杏林同学录(一)
Oct 09 PHP
PHP面向对象分析设计的经验原则
Sep 20 PHP
php仿discuz分页效果代码
Oct 02 PHP
PHP Document 代码注释规范
Apr 13 PHP
通达OA公共代码 php常用检测函数
Dec 14 PHP
PHP zip扩展Linux下安装过程分享
May 05 PHP
PHP版本常用的排序算法汇总
Dec 20 PHP
php版微信公众平台回复中文出现乱码问题的解决方法
Sep 22 PHP
thinkphp3.2中实现phpexcel导出带生成图片示例
Feb 14 PHP
PHP递归遍历文件夹去除注释并压缩php源代码的方法示例
May 23 PHP
php实现简单的守护进程创建、开启与关闭操作
Aug 13 PHP
php解决约瑟夫环算法实例分析
Sep 30 PHP
PHP 事务处理数据实现代码
May 13 #PHP
php 常用类汇总 推荐收藏
May 13 #PHP
php echo 输出字符串函数详解
May 13 #PHP
php 图片加水印与上传图片加水印php类
May 12 #PHP
php access 数据连接与读取保存编辑数据的实现代码
May 12 #PHP
简单PHP上传图片、删除图片实现代码
May 12 #PHP
php 删除记录同时删除图片文件的实现代码
May 12 #PHP
You might like
基于PHP 面向对象之成员方法详解
2013/05/04 PHP
PHP的PSR规范中文版
2013/09/28 PHP
PHP防止post重复提交数据的简单例子
2014/06/07 PHP
joomla实现注册用户添加新字段的方法
2016/05/05 PHP
yii2中dropDownList实现二级和三级联动写法
2017/04/26 PHP
模拟用户操作Input元素,不会触发相应事件
2007/05/11 Javascript
了解jQuery技巧来提高你的代码
2010/01/08 Javascript
用js调用迅雷下载代码的二种方法
2013/04/15 Javascript
jQuery客户端分页实例代码
2013/11/18 Javascript
node.js中的events.emitter.removeListener方法使用说明
2014/12/10 Javascript
ES6中的数组扩展方法
2016/08/26 Javascript
ajax分页效果(bootstrap模态框)
2017/01/23 Javascript
微信小程序使用picker实现时间和日期选择框功能【附源码下载】
2017/12/11 Javascript
vue登录注册及token验证实现代码
2017/12/14 Javascript
vue2.0父子组件间传递数据的方法
2018/08/16 Javascript
详解vantUI框架在vue项目中的应用踩坑
2018/12/06 Javascript
详解在网页上通过JS实现文本的语音朗读
2019/03/28 Javascript
微信小程序页面滚动到指定位置代码实例
2019/09/07 Javascript
[48:48]完美世界DOTA2联赛PWL S3 Magama vs GXR 第一场 12.19
2020/12/24 DOTA
py2exe 编译ico图标的代码
2013/03/08 Python
python利用urllib和urllib2访问http的GET/POST详解
2017/09/27 Python
Python中turtle作图示例
2017/11/15 Python
Python实现将json文件中向量写入Excel的方法
2018/03/26 Python
简单谈谈Python的pycurl模块
2018/04/07 Python
python 统计列表中不同元素的数量方法
2018/06/29 Python
python去除拼音声调字母,替换为字母的方法
2018/11/28 Python
在python 中实现运行多条shell命令
2019/01/07 Python
Python2 与Python3的版本区别实例分析
2020/03/30 Python
学python最电脑配置有要求么
2020/07/05 Python
python MD5加密的示例
2020/10/19 Python
美国名牌手表折扣网站:Jomashop
2020/05/22 全球购物
教师师德演讲稿
2014/05/06 职场文书
讲文明树新风演讲稿
2014/05/12 职场文书
nginx实现动静分离的方法示例
2021/11/07 Servers
Meta增速拉垮,元宇宙难当重任
2022/04/29 数码科技
设置IIS Express并发数
2022/07/07 Servers