gpt4 book ai didi

PHPDoc 和后期(静态或动态)绑定(bind)

转载 作者:IT王子 更新时间:2023-10-28 23:54:30 28 4
gpt4 key购买 nike

大多数 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();

有什么方法可以用某些东西替换'???',以便输入信息正确吗?

最佳答案

对于可以扩展的类中的静态方法:

/** @return static */

对于最终静态方法:

/** @return Control */

对于非静态方法:

/** @return $this */

但在 phpdoc 手册中没有记录

Note that nowadays any Intelij IED (like PhpStorm 2019), does support all three static, $this, and self (as return type in PhpDoc).

关于PHPDoc 和后期(静态或动态)绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5858031/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com