一个类可以在php中保持静态

时间:2010-12-17 13:28:03

标签: php class static

  

可能重复:
  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'

3 个答案:

答案 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";
}