魔术方法是什么鬼?

  魔术方法,也叫魔鬼函数。只要学过PHP的都知道什么是魔术方法,魔术方法就是在某些条件下自动执行的函数。

  PHP的魔术方法主要有下面几个,其他的参考PHP官方手册

  

__construct() __destruct() __tostring() __invoke()
__call() __callStatic() __get() __set()
__isset() __unset __clone()  

  

为什么会有魔术方法?

  魔术方法是在需要实现一些功能,但是一般代码做不到或很难做到的时候才能用。

  比如 __construct(),其实该方法就是一个基本的方法,通过PHP内部的判断来运行该函数。也就是我们在初始化类的同时调用了一个函数,但是如果我们使用该方法,就多了PHP本身的一个判断的代码。

  再说 __get(),其实如果需要获取该变量的话,直接设置为public就行了,不能获取的变量就不能获取了,很简单。

  所以说,魔法方法是为了方(lan)便(ai),能不用魔术方法尽量不用。

魔术方法性能测试(__get())

  使用__get()的代码示例

  1. <?php
  2.  
  3. /**
  4. * 测试类
  5. */
  6. class test
  7. {
  8. private $name = "jepeng";
  9.  
  10. public function __get($varname)
  11. {
  12. return $this->name;
  13. }
  14. }
  15.  
  16. $i = 0;
  17.  
  18. while ( $i<= 10000) {
  19. $i++;
  20. $test = new test();
  21. $test->name;
  22. }

  正常代码示例

  1. <?php
  2.  
  3. /**
  4. * 测试类
  5. */
  6. class test
  7. {
  8. public $name = "jepeng";
  9. }
  10.  
  11. $i = 0;
  12.  
  13. while ( $i<= 10000) {
  14. $i++;
  15. $test = new test();
  16. $test->name;
  17. }

测试结果:

  一万次循环 十万次循环
__get() 21ms 106ms
正常 17ms 41ms

  结论:

  两种方法少循环相差不到,到了十万级的循环,结果是成倍数增加。所以能不用魔术方法尽量不用魔术方法

  文章为作者学习所得,有纰漏,请留言指出,谢谢支持!转载请附上本文章的连接

PHP性能之语言性能优化:魔术方法好不好?的更多相关文章

  1. Kafka性能调优 - Kafka优化的方法

    今天,我们将讨论Kafka Performance Tuning.在本文“Kafka性能调优”中,我们将描述在设置集群配置时需要注意的配置.此外,我们将讨论Tuning Kafka Producers ...

  2. PHP性能之语言性能优化说明

    PHP语言性能优化优化啥? 如下图所示,PHP直接执行的是opcode,所以我们尽量减少扫描和转码解析. 这是我们第一个优化点,尽量使用PHP内置的函数代替我们的代码来实现同样的功能. 和我们自己写的 ...

  3. PHP性能之语言性能优化:安装VLD扩展——检测性能

    使用Linux命令安装 //下载安装包 wget http://pecl.php.net/get/vld-0.14.0.tgz //解压包 tar zxvf vld-0.14.0.tgz //进入编译 ...

  4. PHP性能之语言性能优化:vld——查看代码opcode的神器

    vld介绍 vld是PECL(PHP 扩展和应用仓库)的一个PHP扩展,现在最新版本是 0.14.0(2016-12-18),它的作用是:显示转储PHP脚本(opcode)的内部表示(来自PECL的v ...

  5. mysql性能调优——Query优化

    上节谈了关于mysql锁定机制的优化方案,下面来谈一下Query优化——Mysql Query Optimizer 当Mysql Query Optimizer接受到从Query Parser过来的Q ...

  6. PHP语言性能优化——少使用魔术方法

    对以下使用魔术方法和不适用魔术方法运行时间进行比较 使用魔术方法test1.php: <?php /** * 测试类 */ class test { private $name = " ...

  7. 大型网站性能优化(页面(HTML)优化的方法)

    页面(HTML)优化的方法 除了语言层面上进行优化外,对Web开发,HTML的优化将很大程度上减轻服务器的负载,提高网站的性能 1). 减少HTTP请求数.打开网页,浏览器会发出很多请求,图片,脚本, ...

  8. Go语言性能优化

    原文:http://bravenewgeek.com/so-you-wanna-go-fast/ 我曾经和很多聪明的人一起工作.我们很多人都对性能问题很痴迷,我们之前所做的是尝试逼近能够预期的(性能) ...

  9. WEB前端性能优化常见方法

    1.https://segmentfault.com/a/1190000008829958 (WEB前端性能优化常见方法) 2..https://blog.csdn.net/mahoking/arti ...

随机推荐

  1. luogu P1091 合唱队形

    题目描述 N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学排成合唱队形. 合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1,2…,K,他们的身高分别为T1,T2, ...

  2. 【hdu3652】数位dp(浅尝ACM-A)

    向大佬学习 第一次写博客有点紧张,也算是小萌新的突破吧 这次主要是总结一下校内的ACM比赛的各种题,主要是新思路以及学到的新知识 先放一张 下面开始说正事 题面 A wqb-number, or B- ...

  3. 在Apache中整合JSP和PHP

    在Apache中整合JSP和PHP   我们最希望任何事都是完美的,如在企业应用中,我们只需要选择一个Web平台就可以部署所有的企业应用.但往往理想与现实相去甚远.在现实世界中,信息系统往往是由很多不 ...

  4. java拦截器与过滤器打印请求url与参数

    HttpServletRequest httpServletRequest = (HttpServletRequest) request; HttpServletResponse httpServle ...

  5. hdu4099 Revenge of Fibonacci

    题意:给定fibonacci数列,输入前缀,求出下标.题目中fibonacci数量达到100000,而题目输入的前缀顶多为40位数字,这说明我们只需要精确计算fibinacci数前40位即可.查询时使 ...

  6. YOLO 测试出错:段错误 (核心已转储)

    段错误 (核心已转储): data/voc.names中文标签改成英文

  7. as well as

    一.as well 用法: 1.as well常用作状语,作“又:也”解,相当于too或also,常位于句末,无须用逗号与句子分开.如: I am going to London and my sis ...

  8. 【Docker】Docker管理平台 Rancher ---- 你应该学学Rancher是怎么做容器的管理的

    Elasticsearch is a Lucene-based search engine developed by the open-source vendor, elastic. With pri ...

  9. 配置php扩展redis

    环境说明: 系统版本    CentOS 6.9 x86_64 软件版本    nginx-1.12.2        php-5.5.38        yum安装redis3.2.11 php扩展 ...

  10. demo 微信毛玻璃效果

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...