php静态成员函数效率问题分析
程序员文章站
2022-03-19 23:12:02
...
很多php开发人员都知道, 使用类的静态成员函数效率比类的普通成员函数的要高,本文从应用层次分析这个问题
下面是一个范例:
<?php // php静态方法测试 header('Content-Type: text/html; charset=utf-8'); class xclass{ public static $var1 = '1111111111111111'; public $var2 = 'aaaaaaaaaaaaa'; public function construct() { $this -> var2 = 'bbbbbbbbbbbbbbbb'; } public static function secho1() { echo self :: $var1 . '<hr />'; } public function secho2() { echo $this -> var2 . '<hr />'; } public function secho3() { echo 'cccccccccccccc<hr />'; } } xclass :: secho1(); xclass :: secho3(); echo "------------------------------<br />"; $xc = new xclass(); $xc -> secho1(); $xc -> secho2(); ?>
认真看上面的范例,会发现一个有趣的地方,secho1()定义为静态方法后, 在动态类的对像实例中仍可以引用为动态方法,而secho3()也可以被当作静态成员函数,从这个层面,不难理解为什么说静态成员函数比动态的快。
可能是由于兼容性原因,php的类成员其实并无明显的动静态之分,所有成员在没明确声明的情况下都会被当成静态成员存放在特定的内存区中,所以调用静态成员函数就和调用普通函数一样,速度很快。
但调用动态类则不同,它要以这个类结构作为样本,在内存中重新生成一个对象实例,所以多了一个过程,这对于简单的类来说,可能不算什么,但对于复杂的类来说这是明显影响效率的。
有人会担心,使用静态方法会不会造成内存占用过多,其实从上面分析可以知道,你不声明静态方法,系统依然会把成员当成静态,因此对于一个完全静态方法的类和一个完全动态但没声明实例对象的类占用内存几乎是一样的,所以对于比较直接的逻辑,都建议直接用静态成员方法,当然,一些复杂或对像化明显的逻辑,如果完全用静态类也不是没可能,但那样就失去类的意义了,如果这样,何必OOP,按用途,静态方法特别适用于MVC模式的逻辑类中。
以上就是php静态成员函数效率问题分析的详细内容,更多请关注其它相关文章!
上一篇: 记CI2.0购物车类的3个坑
下一篇: C++类的静态数据成员和静态成员函数
推荐阅读
-
2个自定义的PHP in_array 函数,解决大量数据判断in_array的效率问题
-
浅析PHP的静态成员函数效率更高的原因
-
php 函数中静态变量使用的问题实例分析
-
2个自定义的PHP in_array 函数,解决大量数据判断in_array的效率问题
-
PHP的array_diff()函数在处理大数组时的效率问题
-
PHP 范围解析操作符(::)用法分析【访问静态成员和类常量】
-
PHP的array_diff()函数在处理大数组时的效率问题_PHP教程
-
php 匿名函数的效率问题
-
PHP函数count、strlen效率分析
-
2个自定义的PHP in_array 函数,解决大量数据判断in_array的效率问题_php实例