假如有一个类Gift,要计算该礼物的价格,这个功能是写成静态函数好呢,还是普通函数好呢?
如果写成静态函数,那么之后调用的时候需要写代码:
include 'Gift.class.php';
$result=Gift::Computer(xxx,yyy);
如果写成普通函数,那么之后调用的时候需要写代码:
include "Gift.class.php";
$gift=New Gift();
$result=$gift->Computer(xxx,yyy);这两种方法有何区别,在效率上有何差异?
如果有差异,能否详细解释一下?

解决方案 »

  1.   


    $str = 2;
    static function plus() {
        return $str++;
    }
    plus();
    plus();
    plus();输出结果是:
    4
    6
    8$str = 2;
    function plus() {
        return $str++;
    }
    plus();
    plus();
    plus();输出:
    2
    2
    2
      

  2.   

    回答这个问题首先要知道xxx,yyy这两个参数是什么?
      

  3.   

    假设Computer(xxx,yyy)完成一个加法的功能,{ return (int)xxx+(int)yyy; }
    那么此时把Computer写成静态函数和普通函数,在调用的时候性能上有没有差异。楼上的两位哦误解我的意思了。A,如果写成静态函数,那么之后调用的时候需要写代码:
    include 'Gift.class.php';
    $result=Gift::Computer(xxx,yyy);
    B,如果写成普通函数,那么之后调用的时候需要写代码:
    include "Gift.class.php";
    $gift=New Gift();
    $result=$gift->Computer(xxx,yyy);对于A和B,在执行效率上有何差异。平常写程序时我看到有人按照A中写法,也有人按照B中写法,不知道在实际的效率上有没有差异。如果有差异,那么实现哪类的功能适合写成类的普通函数,哪类的功能适合写成类的静态函数。
      

  4.   

    看楼主问的这个问题,似乎关心执行效率更甚于关心 OO 特性,有点舍本逐末了……
    ————————————————————————————————
    基于CSDN论坛提供的插件扩展功能,自己做了个签名档工具,分享给大家,欢迎技术交流 :)[/size]
      

  5.   

    static破坏了类的封装性和安全性。
      

  6.   

    就你说的这个加法来说, 应该用static,因为函数不需要$this的存在.