我有一些处理cookie的功能。通过将它们移动到自己的类并将它们用作静态方法来对它们进行分组会是一个可怕的想法吗?
功能:
function cookie_get(){}
function cookie_set(){}
function cookie_delete(){}
静态方法:
class cookie
{
static function get(){}
static function set(){}
static function delete(){}
}
答案 0 :(得分:10)
如果您完全了解caveats involved,那将是一个好主意。这称为Utility Pattern:
实用课程的优秀候选人 是方便的方法,可以 在功能上组合在一起。
答案 1 :(得分:9)
组织这样的功能实际上是一种很好的做法。现代的替代方案是使用namespace。
答案 2 :(得分:8)
是的,那会是一个可怕的主意,因为static methods are hard to test and mock。为什么不创建一个真正的Cookie类,您可以在运行时使用这些方法配置为常规方法。
如果您只想将这些功能分组到一个包中,您也可以use Namespaces。
编辑:由于您在评论中提出了这个问题:是的,对于任何测试目的,常规函数与静态函数一样不可测试。因此,您的初始情况与将其更改为使用静态类一样“可怕”。即使伪命名空间也没有给你任何好处,因为你已经将它应用到常规函数中。 cookie_get
与Cookie::get
一样好或坏。
答案 3 :(得分:3)
这将是组织代码的好方法,但为什么要使用静态函数,只需为所需的功能创建一个类。
或者如上所述使用名称空间,但我并不是特别熟悉它们的优点/缺点。
在我看来, $cookie->get()
比cookie_get()
更好用