在我正在处理的应用程序中,有一些类只有静态函数。
这些类不遵循Singleton模式。将它们视为"工具"。
不是真实的例子:
class MathHelper {
public static function plus($num1, $num2)
{
return $num1 + $num2;
}
}
用...来禁止施工是不错的做法。
private function __construct()
{
}
只是为了防止这样的类被实例化?
答案 0 :(得分:1)
您可以将类定义为抽象以防止实例化。
abstract class MathHelper {
public static function plus($num1, $num2)
{
return $num1 + $num2;
}
}
echo MathHelper::plus(1,2); // 3
$math = new MathHelper(); // Fatal error: Cannot instantiate abstract class MathHelper
答案 1 :(得分:0)
将构造函数声明为private,并且不定义函数。 “有效C ++”一书的第6条谈到了这一点。
class MathHelper {
public:
static function plus($num1, $num2)
{
return $num1 + $num2;
}
private:
MathHelper ();
}
答案 2 :(得分:0)
就像@ ian-brindley回答的那样,您可以通过声明您的班级abstract
来阻止实例化,但如果您还想将该类声明为final
,则可以省略abstract
并抛出构造函数中的一个excption:
<?php
final class MyClass
{
public function __construct()
{
throw new \Exception();
}
}