我想要一个小的php模块。该模块将具有纯函数的方法。所以,这只是一系列功能。所有函数都获取一些参数并返回结果,仅取决于输入参数。
我有一些建议:
1。静态类
PHP没有真正的静态类,所以我只使用所有静态方法创建一个类:
class Some_Module
{
static public function sum($a, $b, $c)
{
return $a+$b+$c;
}
static public function method2($a, $b)
{
return $a-$b+5;
}
}
使用这些模块非常容易:
$x = Some_module::sum(1,2,3);
但是,我听说过(有很多关于SO的话题),静态是一种不好的做法。
2。单
它不是那么容易使用:
// we should not to forget to get instance
$module_instance = new Some_module;
$x = $module_instance->sum(1,2,3);
不便之处在于,我们现在应该初始化这个模块。 此外,SO上有大量的主题,其中解释了为什么Singleton在PHP中没用,所以它也是一个不好的做法。
这种模块使用什么模式?
答案 0 :(得分:3)
我认为此讨论将有助于您的决定Static methods: are they still bad considering PHP 5.3 late static binding?
就个人而言,这取决于具体情况。存储一堆misc。辅助方法,我更可能将它用作全局和命名空间。在存储不需要实例化的特定类别的有限数量的方法时,静态类可能是一个不错的选择。要注意单元测试的目的,在cool::method
这样的错误上下文中使用静态方法的许多类将会是地狱。
// keep it abstract to prevent it from being instantiated
abstract class Foo {
// cannot be altered if inherited, although limitation still exists
final public static function bar() {
echo 'test';
}
}
Foo::bar();
答案 1 :(得分:2)
简单,使用类但不要使方法静态。当然,这意味着你将使用一条额外的线来实例化它,这不是什么大问题。您将能够正确扩展该类并对其进行模拟以进行测试。