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 相关文章推荐
PHP4实际应用经验篇(4)
Oct 09 PHP
Discuz板块横排显示图片的实现方法
May 28 PHP
php Undefined index和Undefined variable的解决方法
Mar 27 PHP
CI框架自动加载session出现报错的解决办法
Jun 17 PHP
PHP实现下载断点续传的方法
Nov 12 PHP
php格式输出文件var_export函数实例
Nov 15 PHP
php实现计数器方法小结
Jan 05 PHP
php pthreads多线程的安装与使用
Jan 19 PHP
Zend Framework教程之模型Model用法简单实例
Mar 04 PHP
PHP表单数据写入MySQL数据库的代码
May 31 PHP
PHP中TP5 上传文件的实例详解
Jul 31 PHP
PHP使用 Pear 进行安装和卸载包的方法详解
Jul 08 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 类相关函数的使用详解
2013/05/10 PHP
php实现的表单验证类完整示例
2019/08/13 PHP
JavaScript日历实现代码
2010/09/12 Javascript
初窥JQuery-Jquery简介 入门了解篇
2010/11/25 Javascript
node.js中的events.emitter.once方法使用说明
2014/12/10 Javascript
JavaScript中自定义事件用法分析
2014/12/23 Javascript
javascript弹出页面回传值的方法
2015/01/28 Javascript
基于canvas实现的钟摆效果完整实例
2016/01/26 Javascript
localStorage的黑科技-js和css缓存机制
2017/02/06 Javascript
简化版的vue-router实现思路详解
2018/10/19 Javascript
JS实现带阴历的日历功能详解
2019/01/24 Javascript
vue实现微信获取用户信息的方法
2019/03/21 Javascript
vue-cli webpack配置文件分析
2019/05/20 Javascript
微信小程序 下拉刷新及上拉加载原理解析
2019/11/06 Javascript
vue学习笔记之Vue中css动画原理简单示例
2020/02/29 Javascript
浅谈vue生命周期共有几个阶段?分别是什么?
2020/08/07 Javascript
js正则表达式简单校验方法
2021/01/03 Javascript
[45:25]完美世界DOTA2联赛循环赛 PXG vs IO 第一场 11.06
2020/11/09 DOTA
把大数据数字口语化(python与js)两种实现
2013/02/21 Python
python石头剪刀布小游戏(三局两胜制)
2021/01/20 Python
python实现蒙特卡罗方法教程
2019/01/28 Python
啥是佩奇?使用Python自动绘画小猪佩奇的代码实例
2019/02/20 Python
pygame实现俄罗斯方块游戏(基础篇2)
2019/10/29 Python
详解Django admin高级用法
2019/11/06 Python
python获取百度热榜链接的实例方法
2020/08/25 Python
浅析Python 中的 WSGI 接口和 WSGI 服务的运行
2020/12/09 Python
python matplotlib工具栏源码探析二之添加、删除内置工具项的案例
2021/02/25 Python
美国领先的汽车轮胎和轮毂供应商:TireBuyer
2016/07/21 全球购物
世界上最好的旅行夹克:BauBax
2018/12/23 全球购物
自我鉴定书面格式
2014/01/13 职场文书
新闻专业毕业生英文求职信
2014/03/19 职场文书
个人公开承诺书
2014/03/28 职场文书
音乐会主持人开场白
2015/05/28 职场文书
第一书记观后感
2015/06/08 职场文书
七一表彰大会简报
2015/07/20 职场文书
基于Redis实现分布式锁的方法(lua脚本版)
2021/05/12 Redis