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也可以?成Shell Script
Oct 09 PHP
用php获取远程图片并把它保存到本地的代码
Apr 07 PHP
用PHP读取超大文件的实例代码
Apr 01 PHP
PHP APC配置文件2套和参数详解
Jun 11 PHP
php接口数据加密、解密、验证签名
Mar 12 PHP
PHP中把错误日志保存在系统日志中(Windows系统)
Jun 23 PHP
php使用Session和文件统计在线人数
Jul 04 PHP
php验证手机号码
Nov 11 PHP
Yii2表单事件之Ajax提交实现方法
May 04 PHP
PHP递归算法的简单实例
Feb 28 PHP
PHP进阶学习之Geo的地图定位算法详解
Jun 19 PHP
PhpStorm 如何优雅的调试Hyperf的方法步骤
Nov 24 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
怎么使 Mysql 数据同步
2006/10/09 PHP
使用PHP生成二维码的方法汇总
2015/07/22 PHP
Yii框架数据模型的验证规则rules()被执行的方法
2016/12/02 PHP
PHP实现的简单异常处理类示例
2017/05/04 PHP
php使用ftp实现文件上传与下载功能
2017/07/21 PHP
php实现通过stomp协议连接ActiveMQ操作示例
2020/02/23 PHP
在IE下:float属性会影响offsetTop的取值
2006/12/22 Javascript
JavaScript Event学习第三章 早期的事件处理程序
2010/02/07 Javascript
js 兼容多浏览器的回车和鼠标焦点事件代码(IE6/7/8,firefox,chrome)
2010/04/14 Javascript
css样式标签和js语法属性区别
2013/11/06 Javascript
text-align:justify实现文本两端对齐 兼容IE
2015/08/19 Javascript
require.js的用法详解
2015/10/20 Javascript
IE6-IE9使用JSON、table.innerHTML所引发的问题
2015/12/22 Javascript
JS判断字符串变量是否含有某个字串的实现方法
2016/06/03 Javascript
浅析JSONP技术原理及实现
2016/06/08 Javascript
JS中检测数据类型的几种方式及优缺点小结
2016/12/12 Javascript
JavaScrpt中如何使用 cookie 设置查看与删除功能
2017/07/09 Javascript
一步步教你利用webpack如何搭一个vue脚手架(超详细讲解和注释)
2018/01/08 Javascript
微信小程序页面生命周期详解
2018/01/31 Javascript
微信小程序 Animation实现图片旋转动画示例
2018/08/22 Javascript
jQuery实现的简单手风琴效果示例
2018/08/29 jQuery
浅谈js闭包理解
2019/04/01 Javascript
Vue解析带html标签的字符串为dom的实例
2019/11/13 Javascript
JavaScript实现简单随机点名器
2019/11/21 Javascript
js回调函数仿360开机
2019/12/26 Javascript
javascript异常处理实现原理详解
2020/02/17 Javascript
python黑魔法之编码转换
2016/01/25 Python
python之DataFrame实现excel合并单元格
2021/02/22 Python
Numpy数据类型转换astype,dtype的方法
2018/06/09 Python
澳大利亚家具商店:Freedom
2020/12/17 全球购物
护理专业推荐信
2013/11/07 职场文书
经济管理专业毕业生推荐信
2013/11/11 职场文书
财务方面个人工作的自我评价
2013/12/28 职场文书
环保建议书作文
2014/03/12 职场文书
中学生旷课检讨书500字
2014/10/29 职场文书
企业宣传稿范文
2015/07/23 职场文书