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你的验证码安全码?
Jan 02 PHP
加强版phplib的DB类
Mar 31 PHP
php下通过伪造http头破解防盗链的代码
Jul 03 PHP
PHP 函数执行效率的小比较
Oct 17 PHP
批量获取memcache值并按key的顺序返回的实现代码
Jun 14 PHP
微信扫描二维码登录网站代码示例
Dec 30 PHP
PHP连接MySQL的2种方法小结以及防止乱码
Mar 11 PHP
php实现字符串首字母大写和单词首字母大写的方法
Mar 14 PHP
php实现网站文件批量压缩下载功能
Oct 28 PHP
php函数mkdir实现递归创建层级目录
Oct 27 PHP
PHP实现的微信公众号扫码模拟登录功能示例
May 30 PHP
php的lavarel框架中join和orWhere的用法
Dec 28 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 计算两个时间戳相隔的时间的函数(小时)
2009/12/18 PHP
js prototype 格式化数字 By shawl.qiu
2007/04/02 Javascript
深入理解JavaScript定时机制
2010/10/29 Javascript
json对象转字符串如何实现
2012/12/02 Javascript
javascript实现日历控件(年月日关闭按钮)
2012/12/12 Javascript
JS+CSS 制作的超级简单的下拉菜单附图
2013/11/22 Javascript
javascript打印html内容功能的方法示例
2013/11/28 Javascript
js实现iGoogleDivDrag模块拖动层拖动特效的方法
2015/03/04 Javascript
JS实现的自定义网页拖动类
2015/11/06 Javascript
浅谈javascript中的constructor
2016/06/08 Javascript
高效Web开发的10个jQuery代码片段
2016/07/22 Javascript
canvas实现十二星座星空图
2017/02/14 Javascript
深入理解JavaScript的async/await
2018/08/05 Javascript
Vue中控制v-for循环次数的实现方法
2018/09/26 Javascript
Javascript读写cookie的实例源码
2019/03/16 Javascript
浅谈JS中this在各个场景下的指向
2019/08/14 Javascript
使用Python的Zato发送AMQP消息的教程
2015/04/16 Python
Python数据结构之栈、队列及二叉树定义与用法浅析
2018/12/27 Python
Python小进度条显示代码
2019/03/05 Python
Django实现跨域的2种方法
2019/07/31 Python
python实现登录密码重置简易操作代码
2019/08/14 Python
Python打包工具PyInstaller的安装与pycharm配置支持PyInstaller详细方法
2020/02/27 Python
Python常用扩展插件使用教程解析
2020/11/02 Python
你正在寻找的CSS3 动画技术
2011/07/27 HTML / CSS
CSS3的一个简单导航栏实现
2015/08/03 HTML / CSS
ASOS亚洲:ASOS Asia
2018/03/04 全球购物
师范毕业生个人求职信
2013/12/09 职场文书
《哪吒闹海》教学反思
2014/02/28 职场文书
优秀电子工程系毕业生求职信
2014/05/24 职场文书
工程竣工验收申请报告
2015/05/15 职场文书
鲁滨逊漂流记读书笔记
2015/06/26 职场文书
超外差式晶体管收音机的组装与统调
2021/04/22 无线电
MySQL 数据类型详情
2021/11/11 MySQL
手写Spirit防抖函数underscore和节流函数lodash
2022/03/22 Javascript
详解Go语言中Get/Post请求测试
2022/06/01 Golang
纯CSS实现一个简单步骤条的示例代码
2022/07/15 HTML / CSS