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 相关文章推荐
用Flash图形化数据(一)
Oct 09 PHP
Zend Studio 无法启动的问题解决方法
Dec 04 PHP
PHP表单提交表单名称含有点号(.)则会被转化为下划线(_)
Dec 14 PHP
php 操作数组(合并,拆分,追加,查找,删除等)
Jul 20 PHP
PHP中的Session对象如何使用
Sep 25 PHP
学习php设计模式 php实现抽象工厂模式
Dec 07 PHP
一键生成各种尺寸Icon的php脚本(实例)
Feb 08 PHP
PHP7新特性之抽象语法树(AST)带来的变化详解
Jul 17 PHP
PHP安装memcache扩展的步骤讲解
Feb 14 PHP
PHP面向对象程序设计模拟一般面向对象语言中的方法重载(overload)示例
Jun 13 PHP
在Laravel中使用GuzzleHttp调用第三方服务的API接口代码
Oct 15 PHP
php框架知识点的整理和补充
Mar 01 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中,文件上传
2006/12/06 PHP
基于PHP Web开发MVC框架的Smarty使用说明
2013/04/19 PHP
javascript实现tabs选项卡切换效果(自写原生js)
2013/03/19 Javascript
js封装可使用的构造函数继承用法分析
2015/01/28 Javascript
jQuery实现简单的日期输入格式化控件
2015/03/12 Javascript
jQuery的css() 方法使用指南
2015/05/03 Javascript
Bootstrap入门书籍之(零)Bootstrap简介
2016/02/17 Javascript
Javascript技术栈中的四种依赖注入详解
2016/02/23 Javascript
JavaScript中对象的不同创建方法
2016/08/12 Javascript
JavaScript 轮播图和自定义滚动条配合鼠标滚轮分享代码贴
2016/10/28 Javascript
jQuery基于Ajax方式提交表单功能示例
2017/02/10 Javascript
Mobile Web开发基础之四--处理手机设备的横竖屏问题
2017/08/11 Javascript
JavaScript累加、迭代、穷举、递归等常用算法实例小结
2018/05/08 Javascript
python 控制语句
2011/11/03 Python
Python实现的数据结构与算法之双端队列详解
2015/04/22 Python
windows 10下安装搭建django1.10.3和Apache2.4的方法
2017/04/05 Python
Python入门_浅谈逻辑判断与运算符
2017/05/16 Python
Python优先队列实现方法示例
2017/09/21 Python
使用pygame模块编写贪吃蛇的实例讲解
2018/02/05 Python
pandas重新生成索引的方法
2018/11/06 Python
Python3.5 Pandas模块之DataFrame用法实例分析
2019/04/23 Python
解决Django 在ForeignKey中出现 non-nullable field错误的问题
2019/08/06 Python
Django中的session用法详解
2020/03/09 Python
Python求区间正整数内所有素数之和的方法实例
2020/10/13 Python
python Scrapy框架原理解析
2021/01/04 Python
python Autopep8实现按PEP8风格自动排版Python代码
2021/03/02 Python
HTML5自定义元素播放焦点图动画的实现
2019/09/25 HTML / CSS
HTML5播放实现rtmp流直播
2020/06/16 HTML / CSS
韩国休闲女装品牌网站:ANAIS
2016/08/24 全球购物
英国绿色商店:Natural Collection
2019/05/03 全球购物
模具设计与制造专业自荐书
2014/07/01 职场文书
学习雷锋月活动总结
2014/07/03 职场文书
欠条格式范本
2015/07/03 职场文书
高中班主任工作总结(范文)
2019/08/20 职场文书
初中教务主任竞聘演讲稿(范文)
2019/08/20 职场文书
Python爬虫入门案例之爬取二手房源数据
2021/10/16 Python