Bug #55311 [Ver->Bgs]: Static methods invoke __call when called from within class
Edit report at https://bugs.php.net/bug.php?id=55311&edit=1
ID: 55311
Updated by: cataphract@php.net
Reported by: steve at twitpic dot com
Summary: Static methods invoke __call when called from within
class
-Status: Verified
+Status: Bogus
Type: Bug
Package: *General Issues
Operating System: Ubuntu 11.04
PHP Version: 5.3.6
Block user comment: N
Private report: N
New Comment:
Closing as bogus, see http://www.mail-archive.com/internals@lists.php.net/msg52338.html
Previous Comments:
------------------------------------------------------------------------
[2011-07-29 03:31:19] laruence@php.net
The following patch has been added/updated:
Patch Name: bug55311.phpt
Revision: 1311910279
URL: https://bugs.php.net/patch-display.php?bug=55311&patch=bug55311.phpt&revision=1311910279
------------------------------------------------------------------------
[2011-07-29 03:29:37] laruence@php.net
The following patch has been added/updated:
Patch Name: bug55311.patch
Revision: 1311910177
URL: https://bugs.php.net/patch-display.php?bug=55311&patch=bug55311.patch&revision=1311910177
------------------------------------------------------------------------
[2011-07-29 03:28:51] laruence@php.net
looks like for some reason someone change the if/else sequence make this bug, but I am not sure why
he do this.
------------------------------------------------------------------------
[2011-07-28 21:04:42] steve at twitpic dot com
Description:
------------
When calling a non-existant static method within an objects method, php invokes
_call instead of
__callStatic. When calling the same non-existant static method outside of the
object, php correctly
invokes __callStatic.
It appears that this broke in php5.3.5 and is still broken in 5.3.6. It works as
expected in 5.3.3,
however.
Test script:
---------------
class Test {
public function __call($method, $args) {
echo "call\n";
}
public static function __callStatic($method, $args) {
echo "callStatic\n";
}
public function testing() {
Test::fakeFunction();
}
}
$t = new Test;
$t->testing();
Test::fakeFunction();
Expected result:
----------------
// expected output
callStatic
callStatic
Actual result:
--------------
// output
call
callStatic
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=55311&edit=1
Thread (8 messages)