Edit report at https://bugs.php.net/bug.php?id=55311&edit=1
ID: 55311
User updated by:steve at twitpic dot com
Reported by:steve at twitpic dot com
Summary:Static methods invoke __call when called from within
class
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:
This is ridiculous- this bug is not bogus, it's completely legitimate,
unexpected
behavior, and totally non documented. As a reasonable programmer, one expects a
static call to behave the same inside of a class as well as outside of a class.
How can we bring the "desired" behavior up for vote? I think that it's insane
to
not fix it.
Previous Comments:
[2011-07-29 08:33:24] cataphr...@php.net
Closing as bogus, see
http://www.mail-archive.com/internals@lists.php.net/msg52338.html
[2011-07-29 03:31:19] larue...@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] larue...@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] larue...@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