在PHP中是否有理由在类上使用静态方法而不是独立方法?

and*_*vis 2 php methods static global

我们在这里讨论这个问题.哪个更好?为什么?

1)一个只包含一个函数的php文件......

function bar(){}
Run Code Online (Sandbox Code Playgroud)

像这样叫

bar();
Run Code Online (Sandbox Code Playgroud)

2)包含带静态方法的类的php.

class foo{
static function bar(){}
}
Run Code Online (Sandbox Code Playgroud)

像这样调用foo :: bar();

是否有任何表现理由去做其中一个?出于代码组织的目的,静态方法对我来说看起来更好,但是这里有一些程序员没有理由声明类.

Amb*_*ber 6

我想说的主要优势是重用能力和模块化方面-如果你有您所创建的功能两个不同的"库" AB,他们都恰好有bar()功能呢?由于静态方法,你可以打电话A::bar()B::bar(),但作为独立的功能,你就会有名称冲突.

当然,您可以通过在所有独立函数名称上添加奇怪的前缀来解决这个问题,以使名称不太可能发生冲突,但如果您要这样做,将它包装在类中并使用它们要简单得多作为静态函数.

在PHP 5.3+中,如果您愿意,还可以使用命名空间来实现此目的.