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 相关文章推荐
使用 PHPMAILER 发送邮件实例应用
Nov 07 PHP
PHP计数器的实现代码
Jun 08 PHP
浅析php fwrite写入txt文件的时候用 \r\n不能换行的问题
Aug 06 PHP
Codeigniter上传图片出现“You did not select a file to upload”错误解决办法
Jun 12 PHP
php实现的ping端口函数实例
Nov 12 PHP
php中使用gd库实现下载网页中所有图片
May 12 PHP
php检测文本的编码
Jul 26 PHP
php数组比较实现查找连续数的方法
Jul 29 PHP
关于laravel框架中的常用目录路径函数
Oct 23 PHP
PHP 自动加载类原理与用法实例分析
Apr 14 PHP
Thinkphp 框架基础之源码获取、环境要求与目录结构分析
Apr 27 PHP
php输出形式实例整理
May 05 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将图片保存入mysql数据库失败的解决方法
2014/12/27 PHP
php建立Ftp连接的方法
2015/03/07 PHP
详解js异步文件加载器
2016/01/24 PHP
因str_replace导致的注入问题总结
2019/08/08 PHP
laravel框架中控制器的创建和使用方法分析
2019/11/23 PHP
原生Js与jquery的多组处理, 仅展开一个区块的折叠效果
2011/01/09 Javascript
JavaScript获取页面上某个元素的代码
2011/03/13 Javascript
jquery弹出关闭遮罩层实例
2013/08/06 Javascript
JavaScript中this的使用详解
2013/11/08 Javascript
Nodejs实现的一个简单udp广播服务器、客户端
2014/09/25 NodeJs
javascript中setAttribute兼容性用法分析
2016/12/12 Javascript
React-router中结合webpack实现按需加载实例
2017/05/25 Javascript
JavaScript实现点击出现图片并统计点击次数功能示例
2018/07/23 Javascript
CSS3 动画卡顿性能优化的完美解决方案
2018/09/20 Javascript
JavaScript实现五子棋游戏的方法详解
2019/07/08 Javascript
python实现2048小游戏
2015/03/30 Python
Python 两个列表的差集、并集和交集实现代码
2016/09/21 Python
python-opencv在有噪音的情况下提取图像的轮廓实例
2017/08/30 Python
机器学习经典算法-logistic回归代码详解
2017/12/22 Python
Python进阶之递归函数的用法及其示例
2018/01/31 Python
解决python通过cx_Oracle模块连接Oracle乱码的问题
2018/10/18 Python
python算法与数据结构之单链表的实现代码
2019/06/27 Python
Python用input输入列表的实例代码
2020/02/07 Python
python scatter函数用法实例详解
2020/02/11 Python
基于python实现监听Rabbitmq系统日志代码示例
2020/11/28 Python
css3 按钮样式简单可扩展创建
2013/03/18 HTML / CSS
约瑟夫·特纳男装:Joseph Turner
2017/10/10 全球购物
Spartoo荷兰:鞋子、包包和服装
2018/07/12 全球购物
网络、C以及其他硬件方面的面试题
2016/08/23 面试题
市场营销工作计划书
2014/05/06 职场文书
行政文员岗位职责
2015/02/04 职场文书
2015年消费者权益日活动总结
2015/02/09 职场文书
网站文案策划岗位职责
2015/04/14 职场文书
2015年绩效考核工作总结
2015/05/23 职场文书
python实现自动化群控的步骤
2021/04/11 Python
Python列表的索引与切片
2022/04/07 Python