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 相关文章推荐
MySql中正则表达式的使用方法描述
Jul 30 PHP
PHP register_shutdown_function函数的深入解析
Jun 03 PHP
php unset全局变量运用问题的深入解析
Jun 17 PHP
php下载文件源代码(强制任意文件格式下载)
May 09 PHP
PHP之uniqid()函数用法
Nov 03 PHP
javascript+php实现根据用户时区显示当地时间的方法
Mar 11 PHP
PHP基于SimpleXML生成和解析xml的方法示例
Jul 17 PHP
PHP使用SMTP邮件服务器发送邮件示例
Aug 28 PHP
PHP常用正则表达式精选(推荐)
May 28 PHP
php写入txt乱码的解决方法
Sep 17 PHP
thinkphp5 框架结合plupload实现图片批量上传功能示例
Apr 04 PHP
Thinkphp 框架基础之源码获取、环境要求与目录结构分析
Apr 27 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
用sql命令修改数据表中的一个字段为非空(not null)的语句
2010/06/04 PHP
利用php+mysql来做一个功能强大的在线计算器
2010/10/12 PHP
实例讲解php数据访问
2016/05/09 PHP
laravel邮件发送的实现代码示例
2020/01/31 PHP
jquery插件制作 表单验证实现代码
2012/08/17 Javascript
javascript中常用编程知识
2013/04/08 Javascript
使用GruntJS链接与压缩多个JavaScript文件过程详解
2013/08/02 Javascript
js仿黑客帝国字母掉落效果代码分享
2020/11/08 Javascript
JS阻止事件冒泡行为和闭包的方法
2016/06/16 Javascript
原生的强大DOM选择器querySelector介绍
2016/12/21 Javascript
JavaScript字符集编码与解码详谈
2017/02/02 Javascript
javascript表达式和运算符详解
2017/02/07 Javascript
vue-cli 3.x 配置Axios(proxyTable)跨域代理方法
2018/09/19 Javascript
AngularJS实现的自定义过滤器简单示例
2019/02/02 Javascript
JavaScript中的this妙用实例分析
2020/05/09 Javascript
使用vue构建多页面应用的示例
2020/10/22 Javascript
Python实例之wxpython中Frame使用方法
2014/06/09 Python
Python求导数的方法
2015/05/09 Python
Python使用PDFMiner解析PDF代码实例
2017/03/27 Python
基于python内置函数与匿名函数详解
2018/01/09 Python
python opencv 直方图反向投影的方法
2018/02/24 Python
用python实现百度翻译的示例代码
2018/03/09 Python
Python 批量合并多个txt文件的实例讲解
2018/05/08 Python
Centos 升级到python3后pip 无法使用的解决方法
2018/06/12 Python
python获取点击的坐标画图形的方法
2019/07/09 Python
基于python实现从尾到头打印链表
2019/11/02 Python
利用python实现PSO算法优化二元函数
2019/11/13 Python
tensorflow模型保存、加载之变量重命名实例
2020/01/21 Python
绿色环保口号
2014/06/12 职场文书
初婚初育证明范本
2014/11/24 职场文书
学雷锋感言
2015/08/03 职场文书
2015年文秘个人工作总结
2015/10/14 职场文书
2016年八一建军节活动总结
2016/04/05 职场文书
PostgreSQL存储过程实用脚本(二):创建函数入门
2021/04/05 PostgreSQL
Python 如何安装Selenium
2021/05/06 Python
使用springboot暴露oracle数据接口的问题
2021/05/07 Oracle