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中支持多种编码的中文字符串截取函数!
Mar 20 PHP
40个迹象表明你还是PHP菜鸟
Sep 29 PHP
PHP内核介绍及扩展开发指南―基础知识
Sep 11 PHP
php二维数组合并及去重复的方法
Mar 04 PHP
php截取指定2个字符之间字符串的方法
Apr 15 PHP
php基于session实现数据库交互的类实例
Aug 03 PHP
PHP递归创建多级目录
Nov 05 PHP
CI框架整合smarty步骤详解
May 19 PHP
完美利用Yii2微信后台开发的系列总结
Jul 18 PHP
PHP strripos函数用法总结
Feb 11 PHP
ThinkPHP5.0框架结合Swoole开发实现WebSocket在线聊天案例详解
Apr 02 PHP
php微信小程序解包过程实例详解
Mar 31 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
laravel与thinkphp之间的区别与优缺点
2021/03/02 PHP
ExtJS 2.0 GridPanel基本表格简明教程
2010/05/25 Javascript
JS获取网页属性包括宽、高等等
2014/04/03 Javascript
js实现九宫格图片半透明渐显特效的方法
2015/02/16 Javascript
JS+CSS实现感应鼠标渐变显示DIV层的方法
2015/02/20 Javascript
JQuery中DOM事件绑定用法详解
2015/06/13 Javascript
js控制TR的显示隐藏
2016/03/04 Javascript
jQuery实现的多张图无缝滚动效果【测试可用】
2016/09/12 Javascript
jquery实现焦点轮播效果
2017/02/23 Javascript
javascript按钮禁用和启用的效果实例代码
2017/10/29 Javascript
原生JS与jQuery编写简单选项卡
2017/10/30 jQuery
clipboard.js在移动端复制失败的解决方法
2018/06/13 Javascript
解决Js先触发失去焦点事件再执行点击事件的问题
2018/08/30 Javascript
Vue 实现显示/隐藏层的思路(加全局点击事件)
2019/12/31 Javascript
Vue+abp微信扫码登录的实现代码示例
2020/01/06 Javascript
ES6 Generator基本使用方法示例
2020/06/06 Javascript
JavaScript实现网页计算器功能
2020/10/29 Javascript
[原创]教女朋友学Python(一)运行环境搭建
2017/11/29 Python
简单实现python收发邮件功能
2018/01/05 Python
Python决策树和随机森林算法实例详解
2018/01/30 Python
用xpath获取指定标签下的所有text的实例
2019/01/02 Python
实时获取Python的print输出流方法
2019/01/07 Python
详解Python循环作用域与闭包
2019/03/21 Python
Python3 列表,数组,矩阵的相互转换的方法示例
2019/08/05 Python
Python TCPServer 多线程多客户端通信的实现
2019/12/31 Python
Python 一行代码能实现丧心病狂的功能
2020/01/18 Python
python正则过滤字母、中文、数字及特殊字符方法详解
2020/02/11 Python
python实现简易版学生成绩管理系统
2020/06/22 Python
HTML5探秘:用requestAnimationFrame优化Web动画
2018/06/03 HTML / CSS
学生会主席竞聘书
2014/03/31 职场文书
药店采购员岗位职责
2014/09/30 职场文书
2015年超市收银员工作总结
2015/04/25 职场文书
在校生证明
2015/06/17 职场文书
《刷子李》教学反思
2016/02/20 职场文书
Java Kafka 消费积压监控的示例代码
2021/07/01 Java/Android
windows系统安装配置nginx环境
2022/06/28 Servers