Подтвердить что ты не робот

Необязательный параметр PHPDoc

На SO уже есть два подобных вопроса такого типа, но ни один из ответов не работает.

PHPDoc, по-видимому, не распознает необязательные параметры в моих функциях как необязательные, например:

/**
 * Opens the connection and sets encoding
 * 
 * @param string $encoding Encoding.
 */
public function __construct($encoding='UTF-8') 
{
    $this->connect_mysqli();
    $this->set_encoding_mysqli($encoding);
}

Должен ли он распознавать $encoding как необязательный или я что-то упустил? Я действительно пытался google и прочитал документацию, но все, что я нашел, это:

Если вы не указываете в фактическом коде, что параметр является необязательным (через "$ paramname = 'значение по умолчанию" ), вы должны указать в описании параметра, что параметр является необязательным.

Поэтому я не вижу проблем с моим кодом, но все, что я получаю в документации, это: "__construct (string $encoding)", без знака где-либо этот параметр не является обязательным.

4b9b3361

Ответ 1

Строго говоря, PHP не знает "необязательные параметры", а параметры со значениями по умолчанию, которые могут быть опущены при вызове функции или метода. Хорошо, что в конце необязательный параметр, но ваш

@param string $encoding Encoding.

здесь абсолютно корректен, поскольку значение по умолчанию - это строка. То, что документация пытается вам рассказать, заключается в том, что вы должны упомянуть об этом как

@param string $encoding (optional) Encoding.

Я согласен с вами, что обозначение типа

__construct([$encoding])

или

__construct($encoding = 'UTF-8')

было бы неплохо. Вы можете опубликовать отчет об ошибке

https://github.com/phpDocumentor/phpDocumentor2/issues?state=open

Обновление: реализовано, что это уже упоминалось https://github.com/phpDocumentor/phpDocumentor2/search?q=optional&type=Issues