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 相关文章推荐
发挥语言的威力--融合PHP与ASP
Oct 09 PHP
兼容firefox,chrome的网页灰度效果
Aug 08 PHP
PHP的构造方法,析构方法和this关键字详细介绍
Oct 22 PHP
php实现读取内存顺序号
Mar 29 PHP
php实现从上传文件创建缩略图的方法
Apr 02 PHP
php按单词截取字符串的方法
Apr 07 PHP
php筛选不存在的图片资源
Apr 28 PHP
如何通过Linux命令行使用和运行PHP脚本
Jul 29 PHP
php面向对象与面向过程两种方法给图片添加文字水印
Aug 26 PHP
WordPress中重置文章循环的rewind_posts()函数讲解
Jan 11 PHP
php+jQuery实现的三级导航栏下拉菜单显示效果
Aug 10 PHP
浅谈Laravel POST,PUT,PATCH 路由的区别
Oct 15 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
一个颜色轮换的简单例子
2006/10/09 PHP
PHP array操作10个小技巧分享
2011/06/23 PHP
php使用递归计算文件夹大小
2014/12/24 PHP
PHP概率计算函数汇总
2015/09/13 PHP
Symfony2安装第三方Bundles实例详解
2016/02/04 PHP
yum命令安装php7和相关扩展
2016/07/04 PHP
PHP7标量类型declare用法实例分析
2016/09/26 PHP
phpcms配置列表页以及获得文章发布时间
2017/07/04 PHP
PHP实现的迪科斯彻(Dijkstra)最短路径算法实例
2017/09/16 PHP
php合并数组并保留键值的实现方法
2018/03/12 PHP
Windows平台PHP+IECapt实现网页批量截图并创建缩略图功能详解
2019/08/02 PHP
Javascript 模式实例 观察者模式
2009/10/24 Javascript
datagrid框架的删除添加与修改
2013/04/08 Javascript
AngularJS自动表单验证
2016/02/01 Javascript
jQuery的 $.ajax防止重复提交的两种方法(推荐)
2016/10/14 Javascript
JavaScript递归操作实例浅析
2016/10/31 Javascript
详解react-native WebView 返回处理(非回调方法可解决)
2018/02/27 Javascript
koa2的中间件功能及应用示例
2020/03/05 Javascript
微信小程序上传帖子的实例代码(含有文字图片的微信验证)
2020/07/11 Javascript
[00:35]DOTA2上海特级锦标赛 MVP.Phx战队宣传片
2016/03/04 DOTA
Python操作sqlite3快速、安全插入数据(防注入)的实例
2014/04/26 Python
探究Python多进程编程下线程之间变量的共享问题
2015/05/05 Python
python anaconda 安装 环境变量 升级 以及特殊库安装的方法
2017/06/21 Python
使用pyhon绘图比较两个手机屏幕大小(实例代码)
2020/01/03 Python
解决 jupyter notebook 回车换两行问题
2020/04/15 Python
Python 2.6.6升级到Python2.7.15的详细步骤
2020/12/14 Python
CSS3 滤镜 webkit-filter详细介绍及使用方法
2012/12/27 HTML / CSS
索尼巴西商店:Sony巴西
2019/06/21 全球购物
彪马土耳其官网:PUMA土耳其
2019/07/14 全球购物
公司授权委托书范本
2014/04/03 职场文书
办公室主任个人对照检查材料思想汇报
2014/10/11 职场文书
大学生旷课检讨书1000字
2015/02/19 职场文书
2015年秋季校长开学典礼致辞
2015/07/29 职场文书
2016国培学习心得体会
2016/01/08 职场文书
MySQL 表空间碎片的概念及相关问题解决
2021/05/07 MySQL
Android 界面一键变灰 深色主题工具类
2022/04/28 Java/Android