PHPDoc 和后期(静态或动态)绑定
2022-08-30 21:11:57
大多数 PHP IDE 依靠 phpdoc 来获取有关表达式类型的提示。然而,我经常使用这种模式,它似乎没有被覆盖:
class Control {
private $label = '';
/** @return ??? */
public static function Make(){ return new static(); }
/** @return ??? */
public function WithLabel($value){ $this->label = $value; return $this; }
/** @return void */
public function Render(){ /* ... */ }
}
class Textbox extends Control {
private $text = '';
/** @return ??? */
public function WithText($text){ $this->width = $text; return $this; }
}
现在我可以像这样使用类:
Textbox::Make() // <-- late static binding, returns Textbox
->WithLabel('foo') // <-- late dynamic binding, returns Textbox
->WithText('bar') // <-- normal binding, returns Textbox
->Render();
有没有办法取代“???”s与某些东西,以便键入信息是正确的?