Edit report at https://bugs.php.net/bug.php?id=62393&edit=1
ID: 62393
Comment by: john dot papaioannou at gmail dot com
Reported by: andre-desch at t-online dot de
Summary: __callStatic from a derived class object context
calls __call instead
Status: Not a bug
Type: Bug
Package: Reflection related
Operating System: Windows 7 Prof.
PHP Version: 5.4.4
Block user comment: N
Private report: N
New Comment:
Excuse me, but how exactly does parent::Foo() come into the discussion?
The test code is calling MyBaseClass::Foo(), which clearly is a static call.
Previous Comments:
------------------------------------------------------------------------
[2012-06-22 11:15:16] [email protected]
Thank you for taking the time to write to us, but this is not
a bug. Please double-check the documentation available at
http://www.php.net/manual/ and the instructions on how to report
a bug at http://bugs.php.net/how-to-report.php
This is due to the way calls to parent::foo() and such are handled, these look
like static calls but in fact aren't.
------------------------------------------------------------------------
[2012-06-22 10:04:14] andre-desch at t-online dot de
Description:
------------
If You define both the magic function for static and dynamic calls for a class
and
then call a static function from a derivate's method, not the static but the
dynamic magic function is called.
Test script:
---------------
<?php
class MyBaseClass {
public static function __callStatic($what, $args)
{
return 'static call';
}
public function __call($what, $args)
{
return 'dynamic call';
}
}
class MyDerivedClass extends MyBaseClass {
function someAction()
{
//here I call a base class' static function
//it returns "dynamic call" instead of "static call"
return MyBaseClass::Foo();
}
}
$bar = new MyDerivedClass();
echo $bar->someAction();
?>
Expected result:
----------------
static call
Actual result:
--------------
dynamic call
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=62393&edit=1