內我有這樣的基本代碼:PHPStorm代碼完成故障陣列
$test = array(
'nested' => array('test' => 'nada');
);
function doit()
{
global $test;
$test['nested'][''];
}
PHPStorm正確提示我「嵌套」當我按下Ctrl + Space
然而,我發現沒有辦法讓它建議「測試'作爲'嵌套'數組的成員。
PHPStorm似乎並沒有意識到嵌套是一個數組,也有成員。
這是一個錯誤,我做錯了什麼?
據發表評論我嘗試另一種解決方案,使完成支持:
沒有運氣或者
class test
{
public static $nested = array('test' => 'nada');
}
function doit()
{
$completeme = test::$nested;
$completeme['']; // no completion working
/** @var test::nested $completeme */
$completeme = test::$nested;
$completeme['']; // no completion working
}
在IDE
同樣的問題對我來說,這一次它是一個類裏的數組。
test :: nested [''] < <這個工程,我完成了。但是一旦我做了它的副本,我發現沒有辦法再次完成或使用phpdoc指定類型。
此功能未實現。即使記住第一級陣列的鍵,也會增加一些明顯的開銷(內存+ CPU)。考慮到這個事實,在大多數情況下,第一級就足夠了,其他級別的實施就被擱置了。 – LazyOne 2014-09-30 08:56:12
他們應該添加一個PHPdoc參數來強制完成:/ 我嘗試了另一種方式,我嘗試使用類來代替,問題依然存在。現在它是一個一級數組,但是在製作副本時我無法完成。 – John 2014-09-30 15:44:13
我可能在這裏是錯誤的(因爲我沒有訪問實際的代碼),但據我所知,它將數組鍵與實際的數組/變量名稱鏈接。所以這樣的賦值(一個變量到另一個)不會工作(至少我從來沒有見過它爲我工作)。這個特性的用法非常有限,主要針對完成某些全局數組($ _SERVER等)或類/函數內的數組(例如,類的$ cfg屬性持有類配置詳細信息(而不是將它們保存在單獨的字段中) ))。 – LazyOne 2014-09-30 15:57:07