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中文件下载功能实现超详细流程分析
Jun 13 PHP
PHP GD库生成图像的几个函数总结
Nov 19 PHP
PHP把MSSQL数据导入到MYSQL的方法
Dec 27 PHP
谈谈你对Zend SAPIs(Zend SAPI Internals)的理解
Nov 10 PHP
Yii操作数据库实现动态获取表名的方法
Mar 29 PHP
PHP 以POST方式提交XML、获取XML,解析XML详解及实例
Oct 26 PHP
Linux平台PHP5.4设置FPM线程数量的方法
Nov 09 PHP
PHP实现支付宝即时到账功能
Dec 21 PHP
php微信开发之音乐回复功能
Jun 14 PHP
PHP实现的微信APP支付功能示例【基于TP5框架】
Sep 16 PHP
php写入文件不覆盖的实例讲解
Sep 17 PHP
Laravel 5.5 异常处理 &amp; 错误日志的解决
Oct 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中static,const与define的使用区别
2013/06/18 PHP
PHP利用百度ai实现文本和图片审核
2019/05/08 PHP
jQuery插件 tabBox实现代码
2010/02/09 Javascript
12个非常有创意的JavaScript小游戏
2010/03/18 Javascript
基于jquery的复制网页内容到WORD的实现代码
2011/02/16 Javascript
Javascript 面向对象编程(coolshell)
2012/03/18 Javascript
JQuery选择器绑定事件及修改内容的方法
2015/01/23 Javascript
基于jQuery实现美观且实用的倒计时实例代码
2015/12/30 Javascript
JS瀑布流实现方法实例分析
2016/12/19 Javascript
vue-cli单页应用改成多页应用配置详解
2017/07/14 Javascript
想用好React的你必须要知道的一些事情
2017/07/24 Javascript
Node.js如何使用Diffie-Hellman密钥交换算法详解
2017/09/05 Javascript
基于leaflet.js实现修改地图主题样式的流程分析
2020/05/15 Javascript
vue prop传值类型检验方式
2020/07/30 Javascript
[01:20]DOTA2 2017国际邀请赛冠军之路无止竞
2017/06/19 DOTA
Python中实现常量(Const)功能
2015/01/28 Python
浅谈python for循环的巧妙运用(迭代、列表生成式)
2017/09/26 Python
Python创建二维数组实例(关于list的一个小坑)
2017/11/07 Python
django 基于中间件实现限制ip频繁访问过程详解
2019/07/30 Python
Python openpyxl模块原理及用法解析
2020/01/19 Python
python 获取当前目录下的文件目录和文件名实例代码详解
2020/03/10 Python
python 爬虫网页登陆的简单实现
2020/11/30 Python
Wiggle新西兰:自行车、跑步、游泳
2020/05/06 全球购物
2014三年级班主任工作总结
2014/12/05 职场文书
2015毕业生简历自我评价
2015/03/02 职场文书
入党积极分子半年考察意见
2015/06/02 职场文书
无婚姻登记记录证明
2015/06/18 职场文书
班级元旦晚会开幕词
2016/03/04 职场文书
个人落户申请书怎么写?
2019/06/28 职场文书
教学工作总结范文5篇
2019/08/19 职场文书
如何让vue长列表快速加载
2021/03/29 Vue.js
Anaconda安装pytorch及配置PyCharm 2021环境
2021/06/04 Python
golang操作redis的客户端包有多个比如redigo、go-redis
2022/04/14 Golang
避坑之 JavaScript 中的toFixed()和正则表达式
2022/04/19 Javascript
详解MongoDB排序时内存大小限制与创建索引的注意事项
2022/05/06 MongoDB
Rust中的Struct使用示例详解
2022/08/14 Javascript