- Core:
. Fixed bug #77345 (Stack Overflow caused by circular reference in garbage
collection). (Alexandru Patranescu, Nikita, Dmitry)
+ . Fixed bug #77877 (call_user_func() passes $this to satatic methods).
+ (Dmitry)
. Implemented request #76148 (Add array_key_exists() to the list of
specially compiled functions). (Majkl578)
. Fixed bug #76430 (__METHOD__ inconsistent outside of method).
--- /dev/null
+--TEST--
+Bug #77877 call_user_func() passes $this to satatic methods
+--FILE--
+<?php
+class Foo {
+ static public function bar() {
+ var_dump($this);
+ }
+}
+try {
+ array_map([new Foo, 'bar'],[1]);
+} catch (Throwable $e) {
+ echo $e->getMessage() . "\n";
+}
+try {
+ call_user_func([new Foo, 'bar']);
+} catch (Throwable $e) {
+ echo $e->getMessage() . "\n";
+}
+?>
+--EXPECT--
+Using $this when not in object context
+Using $this when not in object context
if (fcc->object) {
fcc->called_scope = fcc->object->ce;
+ if (fcc->function_handler
+ && fcc->function_handler->common.fn_flags & ZEND_ACC_STATIC) {
+ fcc->object = NULL;
+ }
}
return retval;
}