ID:               43231
 Updated by:       [EMAIL PROTECTED]
 Reported By:      chuck at horde dot org
-Status:           Assigned
+Status:           Bogus
 Bug Type:         Scripting Engine problem
-Operating System: MacOS 10.4
+Operating System: *
-PHP Version:      5.3CVS-2007-11-10 (CVS)
+PHP Version:      5.2.*
-Assigned To:      colder
+Assigned To:      helly
 New Comment:

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 indeed the correct behavior. You do not pass in a valid
callback. If you call hello() directly you get an E_STRICT. Now
call_user_func[_array]() tries to bind this function and cannot because
it is not a valid one. It used to work in 5.2 for BC sakes, because I
overlooked this in 5.0. When I first noticed this issue in 5.1, we
couldn't change it in 5.1 and we also decided to not change this in 5.2.


Previous Comments:
------------------------------------------------------------------------

[2008-01-17 06:11:28] [EMAIL PROTECTED]

Ping?

------------------------------------------------------------------------

[2007-11-25 20:08:47] [EMAIL PROTECTED]

Just a reminder on this, since you said you already had the patch?

------------------------------------------------------------------------

[2007-11-14 08:03:15] [EMAIL PROTECTED]

And this is HEAD issue too, that's where I simply MFH'd the stuff that
broke this. :)

------------------------------------------------------------------------

[2007-11-10 10:32:31] [EMAIL PROTECTED]

I already have a patch for that, will commit that once I'll boot the
other system

------------------------------------------------------------------------

[2007-11-10 03:20:27] chuck at horde dot org

Description:
------------
The callback syntax of array('classname', 'methodname') for making
static method calls is now enforcing E_STRICT even if E_STRICT is not
on. So methods that are not explicitly declared static can't be used
this way even with E_STRICT off. Putting static in front of the function
makes it work, but of course results in a parse error when the code is
run under PHP 4.

Reproduce code:
---------------
<?php

class Test {
    function hello() {
        echo "hello\n";
    }
}

call_user_func(array('Test', 'hello'));

Expected result:
----------------
hello

Actual result:
--------------
Warning: call_user_func() expects parameter 1 to be valid callback,
array given in /Users/chuck/callback.php on line 11


------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=43231&edit=1

Reply via email to