BC break with callbacks in 5.3
| From: | Scott MacVicar | Date: | Wed, 30 Jan 2008 10:48:50 +0000 |
| Subject: | BC break with callbacks in 5.3 | ||
| Groups: | php.internals | ||
| Request: | Send a blank email to internals+get-35016@lists.php.net to get a copy of this message | ||
Hi all,
Static callbacks behave differently between 5.2 and 5.3, I recently
noticed this when trying to install PEAR, it printed a warning each time
call_user_func and call_user_func_array was used.
After some tracking down it seems like the callback option for
zend_parse_parameters was backported from 6 but the strict check was
left as is.
<?php
class MyClass { function test($var) { echo "$var\n"; } }
MyClass::Test('regular');
call_user_func(array('MyClass', 'test'), 'callback');
?>
The prints E_STRICT errors in PHP 5.2 but in 5.3 you get a single
E_STRICT error followed by a warning for call_user_func.
You can resolve this by adding the static keyword to the method
declaration but regardless it's inconsistent as stands. I think the
strict flag needs to be removed for 5.3.
Patch is attached to resolve the issue.
Scott