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中检查PHP文件是否有语法错误的方法
Dec 23 PHP
php下将XML转换为数组
Jan 01 PHP
php ci框架验证码实例分析
Jun 26 PHP
php 5.6版本中编写一个PHP扩展的简单示例
Jan 20 PHP
php计算给定时间之前的函数用法实例
Apr 03 PHP
再Docker中架设完整的WordPress站点全攻略
Jul 29 PHP
PHP的PDO操作简单示例
Mar 30 PHP
linux下php上传文件注意事项
Jun 11 PHP
PHP 7.0新增加的特性介绍
Jun 08 PHP
PHP实现批量重命名某个文件夹下所有文件的方法
Sep 04 PHP
php函数式编程简单示例
Aug 08 PHP
laravel model 两表联查示例
Oct 24 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持久连接mysql_pconnect()函数使用介绍
2012/02/05 PHP
ThinkPHP3.1查询语言详解
2014/06/19 PHP
PHP自带函数给数字或字符串自动补齐位数
2014/07/29 PHP
php实现RSA加密类实例
2015/03/26 PHP
PHP中Closure类的使用方法及详解
2015/10/09 PHP
laravel学习笔记之模型事件的几种用法示例
2017/08/15 PHP
解决laravel id非自增 模型取回为0 的问题
2019/10/11 PHP
PHP如何解决微信文章图片防盗链
2020/12/09 PHP
比较简单的一个符合web标准的JS调用flash方法
2007/11/29 Javascript
JavaScript和ActionScript的交互实现代码
2010/08/01 Javascript
JavaScript 变量作用域分析
2011/07/04 Javascript
深入探讨javascript函数式编程
2015/10/11 Javascript
JavaScript对象数组如何按指定属性和排序方向进行排序
2016/06/15 Javascript
Bootstrap时间选择器datetimepicker和daterangepicker使用实例解析
2016/09/17 Javascript
JavaScript实现快速排序的方法分析
2018/01/10 Javascript
vue使用vuex实现首页导航切换不同路由的方法
2019/05/08 Javascript
JS+HTML5本地存储Localstorage实现注册登录及验证功能示例
2020/02/10 Javascript
Python中利用Scipy包的SIFT方法进行图片识别的实例教程
2016/06/03 Python
浅析Git版本控制器使用
2017/12/10 Python
基于python内置函数与匿名函数详解
2018/01/09 Python
Django项目开发中cookies和session的常用操作分析
2018/07/03 Python
Python实现使用request模块下载图片demo示例
2019/05/24 Python
Python适配器模式代码实现解析
2019/08/02 Python
face++与python实现人脸识别签到(考勤)功能
2019/08/28 Python
CSS3 :nth-child()伪类选择器实现奇偶行显示不同样式
2013/11/05 HTML / CSS
英文简历中的自荐信范文
2013/12/14 职场文书
房屋买卖协议书
2014/04/10 职场文书
机械电子工程专业自荐书
2014/06/10 职场文书
2014年国庆节活动总结
2014/08/26 职场文书
医院深入开展党的群众路线教育实践活动实施方案
2014/08/27 职场文书
党的生日演讲稿
2014/09/10 职场文书
服务承诺书
2015/01/19 职场文书
学生保证书格式
2015/02/27 职场文书
确保工程质量承诺书
2015/04/29 职场文书
高二数学教学反思
2016/02/18 职场文书
2019奶茶店创业计划书范本,值得你借鉴
2019/08/14 职场文书