PHP中类的静态函数和普通函数的区别

无天 2010-12-19 10:41:21
假如有一个类Gift,要计算该礼物的价格,这个功能是写成静态函数好呢,还是普通函数好呢?
如果写成静态函数,那么之后调用的时候需要写代码:
include 'Gift.class.php';
$result=Gift::Computer(xxx,yyy);
如果写成普通函数,那么之后调用的时候需要写代码:
include "Gift.class.php";
$gift=New Gift();
$result=$gift->Computer(xxx,yyy);

这两种方法有何区别,在效率上有何差异?
如果有差异,能否详细解释一下?
...全文
542 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
helloyou0 2010-12-21
  • 打赏
  • 举报
回复
就你说的这个加法来说, 应该用static,因为函数不需要$this的存在.


[Quote=引用 3 楼 denieljean 的回复:]

假设Computer(xxx,yyy)完成一个加法的功能,{ return (int)xxx+(int)yyy; }
那么此时把Computer写成静态函数和普通函数,在调用的时候性能上有没有差异。楼上的两位哦误解我的意思了。

A,如果写成静态函数,那么之后调用的时候需要写代码:
include 'Gift.class.php';
$result=Gift::Computer(xxx……
[/Quote]
paulpeath 2010-12-20
  • 打赏
  • 举报
回复
要区分静态与成员函数的区别。
1、二者作用对象不同。静态函数对该类集体发生作用,成员函数对该成员发生作用,对对象实施操作,不能用静态。就是静态函数没有类对象的地址。
2、目的不同。
ihefe 2010-12-20
  • 打赏
  • 举报
回复
static破坏了类的封装性和安全性。


在-云端 2010-12-20
  • 打赏
  • 举报
回复
如果光说效率的话静态方法好些!省去了每次实例化都需要的额外开销!
skyaspnet 2010-12-20
  • 打赏
  • 举报
回复
理论上是类中的静态函数要快,因为省去了类实例化的开销
helloyou0 2010-12-19
  • 打赏
  • 举报
回复
回答这个问题首先要知道xxx,yyy这两个参数是什么?

[Quote=引用楼主 denieljean 的回复:]
假如有一个类Gift,要计算该礼物的价格,这个功能是写成静态函数好呢,还是普通函数好呢?
如果写成静态函数,那么之后调用的时候需要写代码:
include 'Gift.class.php';
$result=Gift::Computer(xxx,yyy);
如果写成普通函数,那么之后调用的时候需要写代码:
include "Gift.class.php";
$gift=New Gift……
[/Quote]
张小莱 2010-12-19
  • 打赏
  • 举报
回复

$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
maquan 2010-12-19
  • 打赏
  • 举报
回复
看楼主问的这个问题,似乎关心执行效率更甚于关心 OO 特性,有点舍本逐末了……


————————————————————————————————
基于CSDN论坛提供的插件扩展功能,自己做了个签名档工具,分享给大家,欢迎技术交流 :)[/size]
无天 2010-12-19
  • 打赏
  • 举报
回复
假设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中写法,不知道在实际的效率上有没有差异。如果有差异,那么实现哪类的功能适合写成类的普通函数,哪类的功能适合写成类的静态函数。


21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧