可能重复:
Is it possible to create static classes in PHP (like in C#)?
任何人都可以告诉我是否可以将php类声明为静态?
static class StaticClass
{
public static function staticMethod()
{
return 'foo';
}
}
这段代码给了我error.parse错误:解析错误,期待'T_VARIABLE'
答案 0 :(得分:6)
不,您无法将PHP类显式声明为静态。
您可以将其构造函数设为私有,因此尝试实例化它(至少从类外部)会导致致命错误。
class StaticClass
{
private function __construct() {}
public static function staticMethod()
{
return 'foo';
}
}
// Fatal error: Call to private StaticClass::__construct() from invalid context
new StaticClass();
如果您要实现静态初始化和C#静态类中的其他功能,请参阅其他链接的问题。否则,如果您只想将一些实用程序方法组合到一个类中,那么只需将构造函数私有化就可以了。
答案 1 :(得分:3)
另一种选择是将类创建为abstract
。虽然它仍然可以扩展和实例化,但它不能直接实现。
abstract class test {
public static function foo() {
}
}
$foo = new test(); // Fatal error, can't instantiate abstract class
如果你使用私有构造函数,我建议也使它成为final
,因为否则扩展类可以覆盖它并实际实例化类(只要它不调用parent::__construct()
}:
class test {
private final function __construct() {}
}
class test2 extends test {
public function __construct() {} // fatal error, can't extend final method
}
答案 2 :(得分:0)
您可以将变量声明为静态和方法,但不能声明为类:
static public $stat_sample = 'test';
static public getSample() {
return "test";
}