Annotation of embedaddon/php/ext/reflection/tests/bug38465.phpt, revision 1.1
1.1 ! misho 1: --TEST--
! 2: Bug #38465 (ReflectionParameter fails on access to self::)
! 3: --FILE--
! 4: <?php
! 5: class Baz {
! 6: const B = 3;
! 7: }
! 8:
! 9: class Foo {
! 10: const X = 1;
! 11: public function x($a = self::X, $b = Baz::B, $c = 99) {}
! 12: }
! 13:
! 14: class Bar extends Foo {
! 15: const Y = 2;
! 16: public function y($a = self::Y, $b = Baz::B, $c = 99) {}
! 17: }
! 18:
! 19:
! 20: echo "From global scope:\n";
! 21:
! 22: $clazz = new ReflectionClass('Bar');
! 23: foreach ($clazz->getMethods() as $method) {
! 24: foreach ($method->getParameters() as $param) {
! 25: if ($param->isDefaultValueAvailable()) {
! 26: echo $method->getDeclaringClass()->getName(), '::', $method->getName(), '($', $param->getName(), ' = ', $param->getDefaultValue(), ")\n";
! 27: }
! 28: }
! 29: }
! 30:
! 31: echo "\nFrom class context:\n";
! 32:
! 33: class Test {
! 34: function __construct() {
! 35: $clazz = new ReflectionClass('Bar');
! 36: foreach ($clazz->getMethods() as $method) {
! 37: foreach ($method->getParameters() as $param) {
! 38: if ($param->isDefaultValueAvailable()) {
! 39: echo $method->getDeclaringClass()->getName(), '::', $method->getName(), '($', $param->getName(), ' = ', $param->getDefaultValue(), ")\n";
! 40: }
! 41: }
! 42: }
! 43: }
! 44: }
! 45:
! 46: new Test();
! 47:
! 48: ?>
! 49: --EXPECT--
! 50: From global scope:
! 51: Bar::y($a = 2)
! 52: Bar::y($b = 3)
! 53: Bar::y($c = 99)
! 54: Foo::x($a = 1)
! 55: Foo::x($b = 3)
! 56: Foo::x($c = 99)
! 57:
! 58: From class context:
! 59: Bar::y($a = 2)
! 60: Bar::y($b = 3)
! 61: Bar::y($c = 99)
! 62: Foo::x($a = 1)
! 63: Foo::x($b = 3)
! 64: Foo::x($c = 99)
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>