diff --git a/Tests/VariableAnalysisSniff/fixtures/ClassWithMembersFixture.php b/Tests/VariableAnalysisSniff/fixtures/ClassWithMembersFixture.php index 6154b73..20adf83 100644 --- a/Tests/VariableAnalysisSniff/fixtures/ClassWithMembersFixture.php +++ b/Tests/VariableAnalysisSniff/fixtures/ClassWithMembersFixture.php @@ -175,3 +175,11 @@ public function baz3($param) { // Unused variable $param return 'foobar'; } } + +class ClassWithStaticCreateMethod { + + public static function createStatic($value) { + return new static($value); + } + +} diff --git a/Tests/VariableAnalysisSniff/fixtures/FunctionWithClosureFixture.php b/Tests/VariableAnalysisSniff/fixtures/FunctionWithClosureFixture.php index c595c2c..d5cb237 100644 --- a/Tests/VariableAnalysisSniff/fixtures/FunctionWithClosureFixture.php +++ b/Tests/VariableAnalysisSniff/fixtures/FunctionWithClosureFixture.php @@ -94,3 +94,10 @@ function function_with_fully_qualified_type_argument_in_closure($items, $item_id return $line_item->item_id === $item_id; }); } + +function function_with_static_closure() { + $params = array(); + array_map(static function ($inner_param) { + echo $inner_param; + }, $params); +} diff --git a/VariableAnalysis/Sniffs/CodeAnalysis/VariableAnalysisSniff.php b/VariableAnalysis/Sniffs/CodeAnalysis/VariableAnalysisSniff.php index a1aa067..94d1e9f 100644 --- a/VariableAnalysis/Sniffs/CodeAnalysis/VariableAnalysisSniff.php +++ b/VariableAnalysis/Sniffs/CodeAnalysis/VariableAnalysisSniff.php @@ -1333,6 +1333,12 @@ protected function processVariableAsStaticDeclaration(File $phpcsFile, $stackPtr return false; } + // Is the token inside a function call? If so, this is not a static + // declaration. + if (Helpers::isTokenInsideFunctionCallArgument($phpcsFile, $stackPtr)) { + return false; + } + // Is the keyword a late static binding? If so, this isn't the static // keyword we're looking for, but since static:: isn't allowed in a // compile-time constant, we also know we can't be part of a static