php魔法函数与魔法常量使用介绍


Posted in PHP onJuly 23, 2017

php 魔术函数

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()
实例化一个对象时,如果对应的类不存在,则该方法被调用。

php 魔术常量

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给我们提供的魔术方法。

php使用魔法函数和不使用魔法函数比较

/**
* use magic 0.31868386268616s
* not use magic 0.11876797676086s
*/
class Test {
  private $varstr = "123";

  function __get($name) {
    return $this->varstr;
  }
}

function microtime_float()
{
  list($usec, $sec) = explode(" ", microtime());
  return ((float)$usec + (float)$sec);
}

$time_start = microtime_float();

$i = 0;
while ($i<100000) {
  $i++;
  $t = new Test();
  $t->varstr;
}

$time_end = microtime_float();
$time = $time_end - $time_start;

echo "Did nothing in $time seconds\n";

建议尽量少用PHP魔法函数

PHP 相关文章推荐
用PHP和ACCESS写聊天室(九)
Oct 09 PHP
php之对抗Web扫描器的脚本技巧
Oct 01 PHP
《PHP编程最快明白》第三讲:php数组
Nov 01 PHP
使用 PHPMAILER 发送邮件实例应用
Nov 07 PHP
删除html标签得到纯文本可处理嵌套的标签
Apr 28 PHP
PHP反射机制用法实例
Aug 28 PHP
php去除数组中重复数据
Nov 18 PHP
FastCGI 进程意外退出造成500错误
Jul 26 PHP
学习php设计模式 php实现访问者模式(Visitor)
Dec 07 PHP
php+ajax实现带进度条的上传图片功能【附demo源码下载】
Sep 14 PHP
浅谈PHP中new self()和new static()的区别
Aug 11 PHP
php png失真的原因及解决办法
Nov 17 PHP
php curl上传、下载、https登陆实现代码
Jul 23 #PHP
php类自动装载、链式操作、魔术方法实现代码
Jul 23 #PHP
laravel自定义分页效果
Jul 23 #PHP
PHP批量删除jQuery操作
Jul 23 #PHP
PHP mysqli事务操作常用方法分析
Jul 22 #PHP
PHP实现mysqli批量执行多条语句的方法示例
Jul 22 #PHP
PHP编程文件处理类SplFileObject和SplFileInfo用法实例分析
Jul 22 #PHP
You might like
PHP pathinfo()获得文件的路径、名称等信息说明
2011/09/13 PHP
php添加文章时生成静态HTML文章的实现代码
2013/02/17 PHP
php实现简单的语法高亮函数实例分析
2015/04/27 PHP
Yii中CGridView实现批量删除的方法
2015/12/28 PHP
PHP设计模式之迭代器模式Iterator实例分析【对象行为型】
2020/04/26 PHP
JavaScript Timer实现代码
2010/02/17 Javascript
js中的replace方法使用介绍
2013/10/28 Javascript
JS、DOM和JQuery之间的关系示例分析
2014/04/09 Javascript
15款jQuery分布引导插件分享
2015/02/04 Javascript
jQuery通用的全局遍历方法$.each()用法实例
2016/07/04 Javascript
原生js获取浏览器窗口及元素宽高常用方法集合
2017/01/18 Javascript
Angular 4.x 路由快速入门学习
2017/05/03 Javascript
jQuery.Ajax()的data参数类型详解
2017/07/23 jQuery
微信小程序实现录音时的麦克风动画效果实例
2019/05/18 Javascript
详解node登录接口之密码错误限制次数(含代码)
2019/10/25 Javascript
[01:07:34]DOTA2-DPC中国联赛定级赛 RNG vs Aster BO3第二场 1月9日
2021/03/11 DOTA
Python Requests 基础入门
2016/04/07 Python
Pandas统计重复的列里面的值方法
2019/01/30 Python
解决Python 使用h5py加载文件,看不到keys()的问题
2019/02/08 Python
如何实现一个python函数装饰器(Decorator)
2020/10/12 Python
深入理解Python变量的数据类型和存储
2021/02/01 Python
VSCode中autopep8无法运行问题解决方案(提示Error: Command failed,usage)
2021/03/02 Python
css 元素选择器的简单实例
2016/05/23 HTML / CSS
CSS的background属性及CSS3的背景图片设置总结
2016/06/13 HTML / CSS
英国家庭、花园、汽车和移动解决方案:Easylife Group
2018/05/23 全球购物
POP文化和音乐灵感的时尚:Hot Topic
2019/06/19 全球购物
PHP中如何使用Cookie
2015/10/28 面试题
Java的基础面试题附答案
2016/01/10 面试题
如何执行一个shell程序
2012/11/23 面试题
物流专业大学的自我评价
2014/01/11 职场文书
《问银河》教学反思
2014/02/19 职场文书
太太口服液广告词
2014/03/20 职场文书
新闻发布会主持词
2014/03/28 职场文书
美术指导助理求职信
2014/04/20 职场文书
2015年团委副书记工作总结
2015/07/23 职场文书
PyQt5 显示超清高分辨率图片的方法
2021/04/11 Python