fix dynamic static calls on object targets (#87)
parent
b356636853
commit
cbd100f906
4 changed files with 47 additions and 3 deletions
@ -0,0 +1,34 @@ |
|||||||
|
--TEST-- |
||||||
|
Dynamic static method name on object target uses the runtime method value |
||||||
|
--FILE-- |
||||||
|
<?php |
||||||
|
|
||||||
|
class DynamicObjectStaticTarget |
||||||
|
{ |
||||||
|
public static function reward(string $value): string |
||||||
|
{ |
||||||
|
return 'base:' . $value; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
class DynamicObjectStaticChild extends DynamicObjectStaticTarget |
||||||
|
{ |
||||||
|
public static function reward(string $value): string |
||||||
|
{ |
||||||
|
return 'child:' . $value; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
function main(): void |
||||||
|
{ |
||||||
|
$method = 'reward'; |
||||||
|
$target = new DynamicObjectStaticTarget(); |
||||||
|
$child = new DynamicObjectStaticChild(); |
||||||
|
|
||||||
|
var_dump($target::$method('first')); |
||||||
|
var_dump($child::$method(value: 'second')); |
||||||
|
} |
||||||
|
?> |
||||||
|
--EXPECT-- |
||||||
|
string(10) "base:first" |
||||||
|
string(12) "child:second" |
||||||
Loading…
Reference in new issue