Необязательные параметры с возможностью обнуления в PHPDoc


Представьте, что у нас есть метод с необязательным аргументом, допускающим значение null (PHP 7.0), как в этом примере:

/**
 * @param Type1 $foo 
 * @param Type2 $bar
 */
 function myFunction(Type1 $foo, Type2 $bar = null)
 {

 }

К сожалению, из документации PHPDoc неясно, как правильно отметить второй аргумент необязательным и обнуляемым.

Обычно я использую обозначение "Type2|null":

/**
 * @param Type1 $foo 
 * @param Type2|null $bar
 */
 function myFunction(Type1 $foo, Type2 $bar = null)
 {

 }

На самом деле это мой предпочтительный способ, потому что он явно описывает все возможные типы. Но я слышал жалобы, которые не очевидны из документа, если параметр необязательно или нет.

Я в курсе, например, неофициального соглашения "(необязательно)"

/**
 * @param Type1 $foo 
 * @param Type2 $bar (optional)
 */
 function myFunction(Type1 $foo, Type2 $bar = null)
 {

 }

Мне не нравится этот подход, потому что технически вы можете явно указать NULL в качестве второго аргумента. И это не ясно из phpdoc.

Вообще говоря, я даже могу использовать их вместе:

 * @param Type2|null $bar (optional)

Но это выглядит не очень красиво, ИМХО.

Не могли бы вы предоставить мне некоторую обратную связь или, что еще лучше, несколько ссылок на соответствующие стандарты кодирования/руководства по стилю?

Author: yivi, 2018-03-02

1 answers

@param Type2|null $bar

Является правильным способом, с точки зрения phpDocumentor... смотрите последние три аргумента метода getOption(), как показано здесь.

 1
Author: ashnazg, 2018-06-05 15:46:41