PHPStorm + PHPdoc - могу ли я ввести подсказку для отдельного элемента массива?

У меня есть:

$myarr['DB'] = new DB();
$myarr['config'] = new config();

Могу ли я каким-то образом заставить PHPStorm знать, что именно внутри ключей thouse? На данный момент я вижу только подсказки для переменных fo и свойств класса, но не для ключей массива.


person frenzy    schedule 16.09.2015    source источник
comment
В общем: confluence.jetbrains.com/display/PhpStorm/ ( но вроде немного битая? щас).   -  person LazyOne    schedule 16.09.2015


Ответы (5)


Вы можете заранее определить ключи массива, тогда PHPStorm предложит их (CTRL + пробел)

$my = array();
$my['qwe'] = '';
$my['asd'] = '';
$my['zxc'] = '';

$my['']// inside '' will be autosuggest

Вы также можете использовать phpdoc (CTRL + Q):

/**
 * keys:
 * <pre>
 * some_array   (array)
 * some_bool    (boolean)
 * some_double  (double)
 * some_nice_integer    (integer)
 * </pre>
 * @return array
 */
public function toArray(){
    // return some array
}
person Denis Orlov    schedule 01.10.2016

https://plugins.jetbrains.com/plugin/9927-deep-assoc-completion

Введите подсказки из ассоциативного массива, как чемпион

Изображение из репозитория github плагина. Я использую плагин и могу подтвердить, что он работает, как описано.

person j.steelman    schedule 15.05.2019
comment
Я использую этот плагин, и да, он работает как шарм , пока все ресурсы загружены в рамках проекта - person Martin; 15.05.2019

Этот функционал пока не реализован в PhpStorm. Проголосуйте за запрос функции поддержки доступа к массиву.

Вы также можете попробовать плагин Silex idea.

person Onedev_Link    schedule 16.09.2015
comment
Подумайте больше о том, когда PHP в первую очередь знает структуру. Я, например, возвращаю строки с JSON из DB, которые затем декодируются в массив 4D, и хорошо иметь подсказку для темы. Но единственный способ сделать это - PHPdocking, и, к сожалению, для этого нет синтаксиса = ( - person frenzy; 17.09.2015

Для произвольного массива PHPStorm не имеет представления о ключах, которые используются в каком-либо массиве, и поэтому не предоставляет там подсказок. Можно даже доказать, что невозможно надежно реализовать такую ​​функцию, поэтому я думаю вам здесь не повезло.

Собрано из:

Ответ на Stackoverflow

person Khairul Islam    schedule 16.09.2015
comment
Не думайте, что свойства класса DHPdocing несколько более надежны. Почему бы не сделать привязку к ключам массива PHPdoc? Особенно полезно при работе с сервисными контейнерами. - person frenzy; 17.09.2015
comment
Не невозможно, просто сложно. plugins.jetbrains.com/plugin/9927-deep-assoc-completion работает как чемпион без видимого снижения производительности (phpStorm - это что-то вроде зверя, поэтому еще одна секунда или около того, генерируя индекс, останется незамеченной). Использовал его в течение нескольких дней в проектах laravel и WP - это прекрасно. - person j.steelman; 15.05.2019

$obj = (object)[]; // Cast empty array to object

add properties:
$obj->x = 'some'
$obj->y = 'hints'

Теперь PHPStorm при вводе $obj-> ..... подсказывает x и y

person Ja Loc    schedule 05.11.2018
comment
Избегайте преобразования типов с помощью new stdClass(). - person jurchiks; 29.10.2019