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 54 55 56 57 58 59 60 61
|
--TEST--
Dynamic class constant fetch
--FILE--
<?php
class FooParent {
public const BAR = 'bar';
public const BAZ = 'baz';
}
class Foo extends FooParent {
public const BAZ = 'baz child';
}
class BarParent {
public const BAR = 'bar 2';
public const BAZ = 'baz 2';
}
class Bar extends BarParent {
public const BAZ = 'baz 2 child';
}
function test($const) {
echo Foo::{$const}, "\n";
$foo = 'Foo';
echo $foo::{$const}, "\n";
}
test('BAR');
test('BAZ');
$c = function ($const) {
echo self::{$const}, "\n";
echo static::{$const}, "\n";
echo parent::{$const}, "\n";
};
$c->bindTo(null, Foo::class)('BAR');
$c->bindTo(null, Bar::class)('BAZ');
$c->bindTo(null, Foo::class)('class');
$c->bindTo(null, Bar::class)('class');
?>
--EXPECT--
bar
bar
baz child
baz child
bar
bar
bar
baz 2 child
baz 2 child
baz 2
Foo
Foo
FooParent
Bar
Bar
BarParent
|