diff options
| author | Felipe Pena <felipe@php.net> | 2008-08-11 00:50:03 +0000 |
|---|---|---|
| committer | Felipe Pena <felipe@php.net> | 2008-08-11 00:50:03 +0000 |
| commit | e0e16483598ba94105c8fd58a680051944e01935 (patch) | |
| tree | 2a0603372ad23ca9378e5a001e229264085cc521 /ext/reflection | |
| parent | 02fc0f02556001f1637a6135f47d2f0f03ea5506 (diff) | |
| download | php-git-e0e16483598ba94105c8fd58a680051944e01935.tar.gz | |
- MFH: Fixed bug #45765 (ReflectionObject with default parameters of self::xxx cause an error)
Diffstat (limited to 'ext/reflection')
| -rw-r--r-- | ext/reflection/php_reflection.c | 2 | ||||
| -rw-r--r-- | ext/reflection/tests/bug45765.phpt | 82 |
2 files changed, 83 insertions, 1 deletions
diff --git a/ext/reflection/php_reflection.c b/ext/reflection/php_reflection.c index f210261022..2e0a9e97f8 100644 --- a/ext/reflection/php_reflection.c +++ b/ext/reflection/php_reflection.c @@ -634,7 +634,7 @@ static void _parameter_string(string *str, zend_function *fptr, struct _zend_arg *zv = precv->op2.u.constant; zval_copy_ctor(zv); INIT_PZVAL(zv); - zval_update_constant(&zv, (void*)1 TSRMLS_CC); + zval_update_constant_ex(&zv, (void*)1, fptr->common.scope TSRMLS_CC); if (Z_TYPE_P(zv) == IS_BOOL) { if (Z_LVAL_P(zv)) { string_write(str, "true", sizeof("true")-1); diff --git a/ext/reflection/tests/bug45765.phpt b/ext/reflection/tests/bug45765.phpt new file mode 100644 index 0000000000..b0c1be2c4c --- /dev/null +++ b/ext/reflection/tests/bug45765.phpt @@ -0,0 +1,82 @@ +--TEST-- +Fixed bug #45765 (ReflectionObject with default parameters of self::xxx cause an error) +--FILE-- +<?php + +class foo2 { + const BAR = 'foobar'; +} + +class foo extends foo2 { + const BAR = "foo's bar"; + + function test($a = self::BAR) { + } + + function test2($a = parent::BAR) { + } + + function test3($a = foo::BAR) { + } + + function test4($a = foo2::BAR) { + } +} + +ReflectionObject::export(new foo); + +?> +--EXPECTF-- +Object of class [ <user> class foo extends foo2 ] { + @@ %s 7-21 + + - Constants [1] { + Constant [ string BAR ] { foo's bar } + } + + - Static properties [0] { + } + + - Static methods [0] { + } + + - Properties [0] { + } + + - Dynamic properties [0] { + } + + - Methods [4] { + Method [ <user> public method test ] { + @@ %s 10 - 11 + + - Parameters [1] { + Parameter #0 [ <optional> $a = 'foo's bar' ] + } + } + + Method [ <user> public method test2 ] { + @@ %s 13 - 14 + + - Parameters [1] { + Parameter #0 [ <optional> $a = 'foobar' ] + } + } + + Method [ <user> public method test3 ] { + @@ %s 16 - 17 + + - Parameters [1] { + Parameter #0 [ <optional> $a = 'foo's bar' ] + } + } + + Method [ <user> public method test4 ] { + @@ %s 19 - 20 + + - Parameters [1] { + Parameter #0 [ <optional> $a = 'foobar' ] + } + } + } +} |
