在記事本+ +和崇高編碼經過許多愉快的歲月後,我被建議給PHP IDE一個去。我正在嘗試phpStorm,它看起來不錯。代碼完成和文檔是一個很棒的功能,但在使用魔術方法時不適合我。 有沒有辦法讓phpStorm瞭解魔術方法中發生了什麼?如何爲IDE記錄魔術(_call和_callStatic)方法
我們的情況是這樣的:
abstract class a {
public static function __callStatic($method,$args)
{
if(strpos($method,"get_by_") === 0)
{
//do stuff
} elseif(strpos($method,"get_first_by_") === 0) {
//do stuff
} elseif($method == "get_all") {
//do stuff
}
}
}
class b extends a {
// some more stuff
}
b::get_by_user_id(27);
b::get_first_by_id(156);
b::get_all();
魔術callStatic方法允許我們通過1個或多個參數構成的函數調用獲取對象的集合。
我看到在這些情況下有一個@method語句可用,但phpStorm只提取這些語句中的第一個。此外,我只能將返回類型設置爲混合,因爲我希望能夠將其設置爲所需的任何類(在我的示例中爲b)。
任何意見或建議將非常感激地收到,謝謝。
爲什麼_ANYONE_認爲覆蓋'_call'是個好主意? – 2014-12-12 00:45:13
需要說的是,如果任何理智的人會發現這個問題,Brian會對此發表評論。魔術方法適用於所有的意圖和目的:不可文檔化(嘗試將一個(n)[參數| precondition | postcondtion |異常]記錄到一個魔術方法中),而不是IDE友好的(嘗試調試一個魔術方法),對重構(請,甚至不要考慮嘗試在一個軟件中重構一個神奇的方法),和LAZY(好吧,最後一個可能會被解釋爲一個觀點)。 – 2016-08-03 00:26:41
-1與@ LukeA.Leber在評論中的觀點相一致,因爲它證明缺乏願景。雖然魔術方法不是編寫更少代碼的一種方式(如果你使用它們是懶惰的),但魔術方法使體系結構成爲可能,否則這種體系就不可能實現,或者那將非常複雜,不值得編寫。使用PHPDoc時,它們完全是IDE友好的。 請注意,大多數時候你並不需要神奇的方法,但是當你需要它們時,就沒有替代品(以PHP的形式)。當它們以非常結構化的方式使用它們時,它是一個完整的有效解決方案。 – MikeSchinkel 2017-11-04 03:05:05