mirror of
https://github.com/php/php-src.git
synced 2024-11-24 10:24:11 +08:00
Fixed bug #77877 (call_user_func() passes $this to satatic methods).
This commit is contained in:
parent
cd8312a77e
commit
a1b7ccdfc6
2
NEWS
2
NEWS
@ -5,6 +5,8 @@ PHP NEWS
|
||||
- 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).
|
||||
|
23
Zend/tests/bug77877.phpt
Normal file
23
Zend/tests/bug77877.phpt
Normal file
@ -0,0 +1,23 @@
|
||||
--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
|
@ -3170,6 +3170,10 @@ get_function_via_handler:
|
||||
|
||||
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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user