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 相关文章推荐
文章推荐系统(二)
Oct 09 PHP
PHP中cookies使用指南
Mar 16 PHP
关于BIG5-HKSCS的解决方法
Mar 20 PHP
逐步提升php框架的性能
Jan 10 PHP
PHP isset()与empty()的使用区别详解
Aug 29 PHP
基于curl数据采集之单页面采集函数get_html的使用
Apr 28 PHP
php简单防盗链实现方法
Jul 29 PHP
浅谈php fopen下载远程文件的函数
Nov 18 PHP
php查找字符串中第一个非0的位置截取
Feb 27 PHP
PHP封装请求类实例分析【基于Yii框架】
Oct 17 PHP
php 使用expat方式解析xml文件操作示例
Nov 26 PHP
php下的原生ajax请求用法实例分析
Feb 28 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 GD绘制24小时柱状图
2008/06/28 PHP
php 字符过滤类,用于过滤各类用户输入的数据
2009/05/27 PHP
比较简单实用的PHP无限分类源码分享(思路不错)
2011/10/13 PHP
程序员的表白神器“520”大声喊出来
2016/05/20 PHP
深入分析PHP设计模式
2020/06/15 PHP
jquery 将disabled的元素置为enabled的三种方法
2009/07/25 Javascript
javascript中的一些注意事项 更新中
2010/12/06 Javascript
JavaScript高级程序设计(第3版)学习笔记2 js基础语法
2012/10/11 Javascript
jQuery关于导航条背景切换效果实现示例
2013/09/04 Javascript
js判断当前页面用什么浏览器打开的方法
2016/01/06 Javascript
js模糊查询实例分享
2016/12/26 Javascript
vscode配置vue下的es6规范自动格式化详解
2019/03/20 Javascript
说说如何使用Vuex进行状态管理(小结)
2019/04/14 Javascript
Vuex模块化应用实践示例
2020/02/03 Javascript
Vue的状态管理vuex使用方法详解
2020/02/05 Javascript
用Python实现一个简单的多线程TCP服务器的教程
2015/05/05 Python
用C++封装MySQL的API的教程
2015/05/06 Python
详解Python中使用base64模块来处理base64编码的方法
2016/07/01 Python
Python简单实现网页内容抓取功能示例
2018/06/07 Python
Django自定义用户登录认证示例代码
2019/06/30 Python
基于python 微信小程序之获取已存在模板消息列表
2019/08/05 Python
numpy:np.newaxis 实现将行向量转换成列向量
2019/11/30 Python
matplotlib jupyter notebook 图像可视化 plt show操作
2020/04/24 Python
购买英国原创艺术:Art Gallery
2018/08/25 全球购物
Hunkemöller瑞士网上商店:欧洲最大的内衣品牌之一
2018/12/03 全球购物
如何打印出当前源文件的文件名以及源文件的当前行号
2015/04/05 面试题
教育局长自荐信范文
2013/12/22 职场文书
房地产营销策划方案
2014/02/08 职场文书
测绘专业大学生职业生涯规划书
2014/02/10 职场文书
新年联欢会主持词
2014/03/27 职场文书
计生工作先进事迹
2014/08/15 职场文书
推普周国旗下讲话稿
2014/09/21 职场文书
大学生就业意向书
2015/05/11 职场文书
党小组推荐意见
2015/06/02 职场文书
帝企鹅日记观后感
2015/06/10 职场文书
Pyqt5将多个类组合在一个界面显示的完整示例
2021/09/04 Python