雖然這個問題一般在DocBlocks,我用例是關於PHP。文檔塊類類型的繼承
考慮下面的PHP代碼:
<?php
class ParentClass {
/**
* Says 'hi' to the world.
* @return ParentClass Returns itself for chaining.
*/
public function say_hi(){
echo 'hi';
return $this;
}
}
class ChildClass extends ParentClass {
/**
* Says 'bye' to the world.
* @return ChildClass Returns itself for chaining.
*/
public function say_bye(){
echo 'bye';
return $this;
}
}
$c = new ChildClass;
$c->say_hi()->say_b| <- type hinting won't suggest "say_bye" here
?>
這僅僅是一些鏈接一個簡單的類。擴展類放棄了類型提示,因爲父類'docblock正在使用不具有子類的方法/屬性的特定類名稱。
假設我們確實需要類型提示功能,(如果沒有,請你離開這個問題 - 我不想在這裏沒用參數),我應該怎麼解決這個問題?
我想出了以下可能性:
- 更改PHPDoc的標準,允許一個特殊的關鍵字
- 添加多餘say_hi()方法調用父只是重新聲明的docblock
- 不要指定返回類型,讓IDE決定什麼
return $this;
的意思(這是否甚至工作?)
這似乎與Netbeans正常工作,雖然'@return $ this'會很方便... – Christian
事實證明,phpDocumentor 2.x確實認識到「@return self」和「@return $ this」來實現方法是一種「流利」的方法。在生成的文檔中,它突出顯示了「Fluent Interface」方法,並調整了chlid class doc中顯示繼承父方法的返回類類型。 一旦穩定的2.0.0正式發佈,我猜的IDE將實現識別此語法。希望他們的自動完成邏輯能夠正確地進行「流利」識別和調整方法的繼承。 – ashnazg