Укажите тип индекса массива

1

Как указать индекс массива и тип подиндекса? Примечание. Я буду использовать его с 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
phpdoc

2 ответа

2
Лучший ответ

В общем, 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

ПРИМЕЧАНИЕ. Основная цель этого плагина состоит в том, чтобы предложить завершение ключей массива - я не уверен, насколько хорошо он поддерживает разрешения типов для каждого из элементов массива (в случае, если они различны, как в вашем примере).

0

По данным документов, похоже, что только массив можно определить как набор одного определенного типа (вместо установки типа для каждого индекса):

/**
 * @param string[] $options
 */

Лучшим решением будет, вероятно, сделать $options классом, поэтому length и test1 могут быть свойствами со значениями по умолчанию и предварительно определенными типами.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню