- Notifications
You must be signed in to change notification settings - Fork 1.5k
Closed
Labels
Description
Variadic functions where introduced in PHP 5.6 and appear to have been supported by PHPCS since 2014 (see #310 ). However, PHP-7 type declarations of variadic functions are not correctly handled (probably also the case with 5.6 type hints)
http://php.net/manual/en/functions.arguments.php#functions.variable-arg-list shows:
function totalIntervals($unit, DateInterval ...$intervals) {
as an example. However, PHPCS is not happy with any style of commenting. See test file:
<?php /** * Docblock suggested by PHPStorm. * * Expected 1 spaces after parameter type; 0 found * (Squiz.Commenting.FunctionComment.SpacingAfterParamType) * * Expected type hint "DateInterval[] ..."; found * "DateInterval" for $intervals * (Squiz.Commenting.FunctionComment.IncorrectTypeHint) * * @param string $unit Test. * @param DateInterval[] ...$intervals Test. */ function a(string $unit, DateInterval ...$intervals) { }//end a() /** * Docblock from http://stackoverflow.com/a/22271044/136771 . * (Doxygen) * * Doc comment for parameter "$intervals" missing * (Squiz.Commenting.FunctionComment.MissingParamTag) * * Doc comment for parameter $intervals,... does not match * actual variable name $intervals * (Squiz.Commenting.FunctionComment.ParamNameNoMatch) * * @param string $unit Test. * @param DateInterval $intervals,... Test. */ function b(string $unit, DateInterval ...$intervals) { }//end b() /** * A different attempt. * * Expected type hint "DateInterval ..."; found * "DateInterval" for $intervals * Squiz.Commenting.FunctionComment.IncorrectTypeHint) * * @param string $unit Test. * @param DateInterval ... $intervals Test. */ function c(string $unit, DateInterval ...$intervals) { }//end c() /** * Docblock from http://stackoverflow.com/a/14513563/136771 . * (phpDocumentor) * * Doc comment for parameter $internals,... does not match * actual variable name $intervals * (Squiz.Commenting.FunctionComment.ParamNameNoMatch) * * @param string $unit Test. * @param DateInterval $internals,... Test. */ function d(string $unit, DateInterval ...$intervals) { }//end d() /** * Docblock from * https://github.com/phpDocumentor/phpDocumentor2/issues/629 * and * https://philsturgeon.uk/php/2013/08/30/potential-variadic-function-syntax-for-php-56/ * * Expected 1 spaces after parameter type; 0 found * (Squiz.Commenting.FunctionComment.SpacingAfterParamType) * * Doc comment for parameter $internals does not match * actual variable name $intervals * (Squiz.Commenting.FunctionComment.ParamNameNoMatch) * * Expected type hint "DateInterval ..."; found * "DateInterval" for $internals * (Squiz.Commenting.FunctionComment.IncorrectTypeHint) * @param string $unit Test. * @param DateInterval ...$internals Test. */ function e(string $unit, DateInterval ...$intervals) { }//end e()
williamdes