PHP性能之语言性能优化:魔术方法好不好?
2024-10-21 02:42:30
魔术方法是什么鬼?
魔术方法,也叫魔鬼函数。只要学过PHP的都知道什么是魔术方法,魔术方法就是在某些条件下自动执行的函数。
PHP的魔术方法主要有下面几个,其他的参考PHP官方手册
__construct() | __destruct() | __tostring() | __invoke() |
__call() | __callStatic() | __get() | __set() |
__isset() | __unset | __clone() |
为什么会有魔术方法?
魔术方法是在需要实现一些功能,但是一般代码做不到或很难做到的时候才能用。
比如 __construct(),其实该方法就是一个基本的方法,通过PHP内部的判断来运行该函数。也就是我们在初始化类的同时调用了一个函数,但是如果我们使用该方法,就多了PHP本身的一个判断的代码。
再说 __get(),其实如果需要获取该变量的话,直接设置为public就行了,不能获取的变量就不能获取了,很简单。
所以说,魔法方法是为了方(lan)便(ai),能不用魔术方法尽量不用。
魔术方法性能测试(__get())
使用__get()的代码示例
<?php /**
* 测试类
*/
class test
{
private $name = "jepeng"; public function __get($varname)
{
return $this->name;
}
} $i = 0; while ( $i<= 10000) {
$i++;
$test = new test();
$test->name;
}
正常代码示例
<?php /**
* 测试类
*/
class test
{
public $name = "jepeng";
} $i = 0; while ( $i<= 10000) {
$i++;
$test = new test();
$test->name;
}
测试结果:
一万次循环 | 十万次循环 | |
__get() | 21ms | 106ms |
正常 | 17ms | 41ms |
结论:
两种方法少循环相差不到,到了十万级的循环,结果是成倍数增加。所以能不用魔术方法尽量不用魔术方法。
文章为作者学习所得,有纰漏,请留言指出,谢谢支持!转载请附上本文章的连接。
最新文章
- 走向面试之数据库基础:三、SQL进阶之变量、事务、存储过程与触发器
- October 16th Week 43rd Sunday 2016
- MVC Razor模板引擎 @RenderBody、@RenderPage、@RenderSection及Html.RenderPartial、Html.RenderAction
- C#-2 wpf 项目编程结构设计
- Java包的命名规则
- MyBatis之四:调用存储过程含分页、输入输出参数
- Logback 将日志分级别打印
- Css3渐变实例Demo(一)
- C++STL_max
- html常用标签有哪些?
- Python学习笔记_Chapter 6定制数据对象
- Spring的IoC容器
- os系统
- html 刷新重载方法汇总
- Storm(三)Storm的原理机制
- leetcode ex3 找出穿过最多点的直线 Max Points on a Line
- 【struts2】名为chain的ResultType
- UVA 2474 - Balloons in a Box 爆搜
- JAVA 枚举单例模式
- iOS 7 修改默认布局从status bar 底部开始