1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
|
--TEST--
Acquire callable through various dynamic constructs
--FILE--
<?php
class A {
public static function b($x) {
return $x;
}
public function c($x) {
return $x;
}
}
$name = 'strlen';
$fn = $name(...);
var_dump($fn('x'));
$name = ['A', 'b'];
$fn = $name(...);
var_dump($fn(2));
$name = [new A, 'c'];
$fn = $name(...);
var_dump($fn(3));
$name1 = 'A';
$name2 = 'b';
$fn = $name1::$name2(...);
var_dump($fn(4));
$name2 = 'c';
$fn = (new A)->$name2(...);
var_dump($fn(5));
$fn = [A::class, 'b'](...);
var_dump($fn(6));
$o = new stdClass;
$o->prop = A::b(...);
($o->prop)(7);
$nam
?>
--EXPECT--
int(1)
int(2)
int(3)
int(4)
int(5)
int(6)
|