Как указать индекс массива и тип подиндекса? Примечание. Я буду использовать его с PHPStorm.
Пример массива:
function name ($options) {
// $options['length'] => integer
// $options['more'] => array
// $options['more']['test1'] => boolean
// $options['more']['test2'] => boolean
}
Пример (который не работает):
/**
* @param array $options
* @var int $length
* @var array $more
* @var bool $test1
* @var bool $test2
*/
В общем, PhpStorm поддерживает только простой синтаксис, как сказал Сэм, например
/**
* @param string[] $options
*/
Код выше описанного параметра, который представляет собой массив строк.
Плагин завершения установки установки - он поддерживает новый предложенный синтаксис хэшей (описывающий ключи массива и его типы) в PHPDoc: https://github.com/phpDocumentor/fig-standards/blob/master/proposed/phpdoc.md#7 -describing-хэшей
Этот плагин добавит завершение кода для ключей массива.
<?php
class Element {
/**
* Initializes this class with the given options.
*
* @param array $options {
* @var bool $required Whether this element is required
* @var string $label The display name for this element
* }
*/
public function __construct(array $options = array())
{
// some code here
}
}
new Element(['label' => 'Bob', '|' ]);
// | Ctrl+Space will show supported attributes
ПРИМЕЧАНИЕ. Основная цель этого плагина состоит в том, чтобы предложить завершение ключей массива - я не уверен, насколько хорошо он поддерживает разрешения типов для каждого из элементов массива (в случае, если они различны, как в вашем примере).
По данным документов, похоже, что только массив можно определить как набор одного определенного типа (вместо установки типа для каждого индекса):
/**
* @param string[] $options
*/
Лучшим решением будет, вероятно, сделать $options
классом, поэтому length
и test1
могут быть свойствами со значениями по умолчанию и предварительно определенными типами.