summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXinchen Hui <laruence@php.net>2011-11-24 09:16:11 +0000
committerXinchen Hui <laruence@php.net>2011-11-24 09:16:11 +0000
commit3db55c8233420b8713155302ca42b5851ac94c67 (patch)
tree5113deeb92e0f9541f5711b12dfd769d5a76ccd9
parentc05614fb6d6f9d4d44b5fa9878635d6e5cdb0b1c (diff)
downloadphp-git-3db55c8233420b8713155302ca42b5851ac94c67.tar.gz
Fixed bug #60367 (Reflection and Late Static Binding)
-rw-r--r--NEWS1
-rw-r--r--ext/reflection/php_reflection.c2
-rw-r--r--ext/reflection/tests/bug60367.phpt26
3 files changed, 28 insertions, 1 deletions
diff --git a/NEWS b/NEWS
index 83b5eb98d3..60a30952e1 100644
--- a/NEWS
+++ b/NEWS
@@ -66,6 +66,7 @@ PHP NEWS
- Reflection:
. Fixed bug #60357 (__toString() method triggers E_NOTICE "Array to string
conversion"). (Laruence)
+ . Fixed bug #60367 (Reflection and Late Static Binding). (Laruence)
- SOAP extension:
. Added new SoapClient option "keep_alive". FR #60329. (Pierrick)
diff --git a/ext/reflection/php_reflection.c b/ext/reflection/php_reflection.c
index 1e0386a601..754be1483c 100644
--- a/ext/reflection/php_reflection.c
+++ b/ext/reflection/php_reflection.c
@@ -2811,7 +2811,7 @@ ZEND_METHOD(reflection_method, invoke)
fcc.initialized = 1;
fcc.function_handler = mptr;
fcc.calling_scope = obj_ce;
- fcc.called_scope = obj_ce;
+ fcc.called_scope = intern->ce;
fcc.object_ptr = object_ptr;
result = zend_call_function(&fci, &fcc TSRMLS_CC);
diff --git a/ext/reflection/tests/bug60367.phpt b/ext/reflection/tests/bug60367.phpt
new file mode 100644
index 0000000000..31e8a2e947
--- /dev/null
+++ b/ext/reflection/tests/bug60367.phpt
@@ -0,0 +1,26 @@
+--TEST--
+Bug #60367 (Reflection and Late Static Binding)
+--FILE--
+<?php
+abstract class A {
+
+ const WHAT = 'A';
+
+ public static function call() {
+ echo static::WHAT;
+ }
+
+}
+
+class B extends A {
+
+ const WHAT = 'B';
+
+}
+
+$method = new ReflectionMethod("b::call");
+$method->invoke(null);
+$method = new ReflectionMethod("A::call");
+$method->invoke(null);
+--EXPECTF--
+BA