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 和 XML: 使用expat函数(二)
Oct 09 PHP
php下将图片以二进制存入mysql数据库中并显示的实现代码
May 27 PHP
php 缩略图实现函数代码
Jun 23 PHP
PHP正则表达式之定界符和原子介绍
Oct 05 PHP
php生成随机数的三种方法
Sep 10 PHP
php使用CURL伪造IP和来源实例详解
Jan 15 PHP
PHP往XML中添加节点的方法
Mar 12 PHP
php源码分析之DZX1.5随机数函数random用法
Jun 17 PHP
windows8.1下Apache+Php+MySQL配置步骤
Oct 30 PHP
PHP中Notice错误常见解决方法
Apr 28 PHP
php实现获取农历(阴历)、节日、节气的类与用法示例
Nov 20 PHP
laravel model模型定义实现开启自动管理时间created_at,updated_at
Oct 17 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制作中间带自己定义图片二维码的方法
2014/01/27 PHP
PHP通过反射动态加载第三方类和获得类源码的实例
2015/11/27 PHP
jQuery find和children方法使用
2011/01/31 Javascript
关于IE中getElementsByClassName不能用的问题解决方法
2013/08/26 Javascript
浅析用prototype定义自己的方法
2013/11/14 Javascript
原生javascript获取元素样式
2014/12/31 Javascript
学习JavaScript设计模式之代理模式
2016/01/12 Javascript
jquery实现表格中点击相应行变色功能效果【实例代码】
2016/05/09 Javascript
Three.js学习之Lamber材质和Phong材质
2016/08/04 Javascript
Angularjs 实现分页功能及示例代码
2016/09/14 Javascript
javascript实现右下角广告框效果
2017/02/01 Javascript
微信小程序 图片上传实例详解
2017/05/05 Javascript
JS使用ActiveXObject实现用户提交表单时屏蔽敏感词功能
2017/06/20 Javascript
vue使用axios时关于this的指向问题详解
2017/12/22 Javascript
对Vue2 自定义全局指令Vue.directive和指令的生命周期介绍
2018/08/30 Javascript
理解Python中的绝对路径和相对路径
2017/08/30 Python
Java实现的执行python脚本工具类示例【使用jython.jar】
2018/03/29 Python
Python3实现的判断回文链表算法示例
2019/03/08 Python
python的内存管理和垃圾回收机制详解
2019/05/18 Python
Python实现Mysql数据统计及numpy统计函数
2019/07/15 Python
利用python-pypcap抓取带VLAN标签的数据包方法
2019/07/23 Python
Python计算矩阵的和积的实例详解
2020/09/10 Python
pycharm专业版远程登录服务器的详细教程
2020/09/15 Python
详解Java中一维、二维数组在内存中的结构
2021/02/11 Python
HTML5 Canvas 破碎重组的视频特效的示例代码
2019/09/24 HTML / CSS
HTML5中实现拖放效果无须借助javascript
2012/12/26 HTML / CSS
html2canvas生成的图片偏移不完整的解决方法
2020/05/19 HTML / CSS
学校花圃的标语
2014/06/18 职场文书
领导个人查摆剖析材料
2014/10/29 职场文书
合同权益转让协议书模板
2014/11/18 职场文书
2014年个人工作总结模板
2014/12/15 职场文书
医院办公室主任岗位职责
2015/04/01 职场文书
2015年食品安全工作总结
2015/05/15 职场文书
2016年安全月活动总结
2016/04/06 职场文书
python四个坐标点对图片区域最小外接矩形进行裁剪
2021/06/04 Python
详解如何使用Nginx解决跨域问题
2022/05/06 Servers