Skip to content

Commit 6e022ca

Browse files
authored
Handle variable class static refs (#63)
* Tests: add test for variable class static reference * Allow variable class static references
1 parent 14cb29e commit 6e022ca

File tree

4 files changed

+17
-2
lines changed

4 files changed

+17
-2
lines changed

VariableAnalysis/Sniffs/CodeAnalysis/VariableAnalysisSniff.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -409,6 +409,7 @@ protected function checkForStaticMember(File $phpcsFile, $stackPtr, $varName, $c
409409
T_SELF,
410410
T_PARENT,
411411
T_STATIC,
412+
T_VARIABLE,
412413
];
413414
if (! in_array($tokens[$classNamePtr]['code'], $staticReferences, true)) {
414415
return false;

VariableAnalysis/Tests/CodeAnalysis/VariableAnalysisTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,7 @@ public function testClassWithMembersWarnings() {
161161
13,
162162
18,
163163
19,
164-
62,
164+
64,
165165
];
166166
$this->assertEquals($expectedWarnings, $lines);
167167
}

VariableAnalysis/Tests/CodeAnalysis/fixtures/ClassWithMembersFixture.php

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,10 +57,14 @@ function method_with_member_var() {
5757
}
5858

5959
class ClassWithLateStaticBinding {
60+
public static $static_member_var;
61+
6062
static function method_with_late_static_binding($param) {
6163
static::some_method($param);
62-
static::some_method($var);
64+
static::some_method($var); // should report a warning
6365
static::some_method(static::CONSTANT, $param);
66+
$called_class = get_called_class();
67+
echo $called_class::$static_member_var;
6468
}
6569
}
6670

VariableAnalysis/Tests/CodeAnalysis/fixtures/FunctionWithVariableCallFixture.php

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,4 +41,14 @@ public function funcUsingPropertyReferenceWithThis($meta) {
4141
public function funcUsingPropertyReferenceWithStatic($meta) {
4242
return static::$$meta;
4343
}
44+
45+
public function funcUsingPropertyReferenceWithVariableClass($meta) {
46+
$called_class = get_called_class();
47+
return $called_class::$$meta;
48+
}
49+
50+
public function funcUsingNamedPropertyReferenceWithVariableClass() {
51+
$called_class = get_called_class();
52+
return $called_class::$staticProperty;
53+
}
4454
}

0 commit comments

Comments
 (0)