浅析PHP的静态成员函数效率更高的原因

 更新时间:2014年06月13日 15:48:39   投稿:shichen2014  
很多php开发人员都知道, 使用类的静态成员函数效率比类的普通成员函数的要高,本文从应用层次分析这个问题,需要的朋友可以参考下

很多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模式的逻辑类中。

 

相关文章

  • php5 non-thread-safe和thread-safe这两个版本的区别分析

    php5 non-thread-safe和thread-safe这两个版本的区别分析

    从PHP5.2.10版本开始(现在有PHP5.2.10和5.3两个版本),有None-Thread Safe与Thread Safe两种版本的可供选择,这两种版本有何不同,作为使用者来说又应该如何选择呢?下面聚友将为您讲述。
    2010-03-03
  • php中的登陆login

    php中的登陆login

    php中的登陆login...
    2007-01-01
  • PHP文件缓存类实现代码

    PHP文件缓存类实现代码

    这篇文章主要介绍了PHP文件缓存类实现代码,php中缓存分类数据库缓存,文件缓存和内存缓存,对php缓存感兴趣的朋友可以学习学习下面的文章。
    2015-10-10
  • PHP实现页面跳转的三种方式

    PHP实现页面跳转的三种方式

    在PHP中,实现页面跳转有多种方法,这些方法包括使用HTTP头信息、JavaScript以及Meta标签,本文给大家介绍了PHP实现页面跳转的三种方式,并通过代码讲解的非常详细,需要的朋友可以参考下
    2024-11-11
  • php封装的pdo数据库操作工具类与用法示例

    php封装的pdo数据库操作工具类与用法示例

    这篇文章主要介绍了php封装的pdo数据库操作工具类与用法,结合实例形式分析了php封装的pdo数据库连接、增删改查、错误处理、关闭连接等操作及相关使用技巧,需要的朋友可以参考下
    2019-05-05
  • php实现图片上传、剪切功能

    php实现图片上传、剪切功能

    这篇文章主要为大家详细介绍了php实现图片上传、剪切功能,具有一定的参考价值,感兴趣的朋友可以参考一下
    2016-05-05
  • 10款PHP开源商城系统汇总介绍

    10款PHP开源商城系统汇总介绍

    本文给大家推荐了10款目前非常火的PHP开源商城系统,排名不分先后,有需要做电子商务平台的小伙伴可以参考下。
    2015-07-07
  • php常用的安全过滤函数集锦

    php常用的安全过滤函数集锦

    由于越来越多的项目开始使用框架,所以,很多的程序员也不在关心安全的问题!因为框架已经帮我们几乎完美的处理了!但是,个人认为,我们还是需要了解一下常用的安全处理函数!
    2014-10-10
  • 让你的WINDOWS同时支持MYSQL4,MYSQL4.1,MYSQL5X

    让你的WINDOWS同时支持MYSQL4,MYSQL4.1,MYSQL5X

    让你的WINDOWS同时支持MYSQL4,MYSQL4.1,MYSQL5X...
    2006-12-12
  • PHP 数组和字符串互相转换实现方法

    PHP 数组和字符串互相转换实现方法

    PHP 中由于数组和字符串这两种变量类型是如此常用,以至于 PHP 具有两个函数,可以在字符串和数组之间互相进行转换
    2013-03-03

最新评论