phpcs-variable-analysis icon indicating copy to clipboard operation
phpcs-variable-analysis copied to clipboard

Unused arguments should not be reported for magic methods

Open jrfnl opened this issue 5 years ago • 4 comments

PHP magic methods have a method signature check.

While in most cases it wouldn't make sense not to use the declared/passed parameters, most notably with __call() and __callStatic() there can be situations in which not all parameters are used, like when it is known that the methods which will be called will not take arguments.

class Valid_Magic_Methods
{
    public function __call($name, $args) {
        return $this->$name();
    }
    public static function __callStatic($name, $args) {
        return self::$name();
    }
}

Currently this standard will throw a Unused function parameter $name. (VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable) warning in this situation, but the offending parameter can not be removed as otherwise PHP generates a fatal error.

Refs:

  • https://www.php.net/manual/en/language.oop5.magic.php
  • https://3v4l.org/g55Or

In case you're interested, PHPCSUtils contains some utility methods which could be used to fix this: https://github.com/PHPCSStandards/PHPCSUtils/blob/a9ee9e0afffca398df6f997b44628440aa838d41/PHPCSUtils/Utils/FunctionDeclarations.php#L844-L881

jrfnl avatar Feb 13 '20 02:02 jrfnl

Any fix for this should probably also cover the magic (global) __autoload() function. Ref: https://www.php.net/manual/en/function.autoload

jrfnl avatar Feb 13 '20 22:02 jrfnl

Oh, great point. Thanks!

sirbrillig avatar Feb 13 '20 23:02 sirbrillig

Just noting I recently ran into this again. Utils is getting close to the 1.0.0 release, so maybe we should leave it until that's available ?

jrfnl avatar Oct 12 '22 01:10 jrfnl

Oh, thanks. I had forgotten about this issue. I'm stretched pretty thin right now but I'll see if I can write up a quick patch to ignore unused params in these magic methods, but if not we'll just wait for the Utils functions.

sirbrillig avatar Oct 12 '22 20:10 sirbrillig