何时在PHP中使用静态方法/字段?

Cli*_*ote 5 php static

什么时候应该在PHP中使用静态函数/类/字段?它的一些实际用途是什么?

Kam*_*šík 5

你不应该,它很少有用.静态的常见用法是工厂方法和singleton :: instance()

厂:

class Point{
  private $x;
  private $y;

  public function __construct($x, $y){
    ...
  }

  static function fromArray($arr){
    return new Point($arr["x"], $arr["y"]);
  } 
}
Run Code Online (Sandbox Code Playgroud)

单:

class DB{
  private $inst;

  private function __construct(){
    ...
  }

  static function instance(){
    if ($this->inst)
      return $this->inst;

    return $this->inst = new DB();
  }
}
Run Code Online (Sandbox Code Playgroud)

  • 我同意这一点大多没有必要和有害.我会添加一个有用的案例:创建更高级别的语言.例如User :: with100Points().更多内容可以在由测试指导的"面向对象的软件"一书中找到. (2认同)