Необязательные параметры с возможностью обнуления в 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)
Но это выглядит не очень красиво, ИМХО.
Не могли бы вы предоставить мне некоторую обратную связь или, что еще лучше, несколько ссылок на соответствующие стандарты кодирования/руководства по стилю?