ID: 18926 Updated by: [EMAIL PROTECTED] Reported By: [EMAIL PROTECTED] -Status: Open +Status: Bogus Bug Type: Scripting Engine problem Operating System: Mac OS X 10.1.5 / Darwin 5.5 PHP Version: 4CVS-2002-08-15 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 Previous Comments: ------------------------------------------------------------------------ [2002-08-15 21:09:04] [EMAIL PROTECTED] presuming ZE == ZE1.3.0, this is on a vanilla build from CVS (just checked it out, ran buildconf, then configure w/o options): <?php class foo { function from_foo($p) { echo "i am from foo: $p\n"; } } class bar extends foo { function test() { foo::from_foo('foo::from_foo'); call_user_func( array('foo','from_foo') ,'call_user_func(array(foo,from_foo))' ); parent::from_foo('parent::from_foo'); call_user_func( array('parent','from_foo') ,'call_user_func(array(parent,from_foo))' ); } } error_reporting(E_ALL); bar::test(); ?> gives you: # sapi/cli/php -v PHP 4.3.0-dev (cli), Copyright (c) 1997-2002 The PHP Group Zend Engine v1.3.0, Copyright (c) 1998-2002 Zend Technologies # sapi/cli/php ctest.php i am from foo: foo::from_foo i am from foo: call_user_func(array(foo,from_foo)) i am from foo: parent::from_foo Warning: call_user_func(): First argumented is expected to be a valid callback, 'parent::from_foo' was given in ctest.php on line 14 ------------------------------------------------------------------------ [2002-08-15 20:40:37] [EMAIL PROTECTED] can you please give a ZE example? ------------------------------------------------------------------------ [2002-08-15 20:26:30] [EMAIL PROTECTED] You see the same behavior with PHP 4.3.0-dev and ZE1.3 for 'parent'. Calls to 'self' and the change in function name scope are ZE2 only features anyway (I think). ------------------------------------------------------------------------ [2002-08-15 20:09:25] [EMAIL PROTECTED] Is this with ZE2 or ZE1? ------------------------------------------------------------------------ [2002-08-15 17:10:04] [EMAIL PROTECTED] Using call_user_func_array() inside a class function produces different results from the equivalent direct function calls. call_user_func_array(array('self,'method'), $args) gives an error, although self::method() works, as does call_user_func_array(array('myclassname','method'), $args). (This format for calling static class methods is undocumented, by the way - is it officially even supposed to work?) Also, in PHP 4.3-dev, a call to myfunction() inside a class function will check the current class's function table first, before calling a globally defined function. But call_user_func_array('myfunction',$args) does not - it only looks for global functions. Whether any of these things are bugs or features, I don't know. test script: <?php class foo { function myname() { return 'foo'; } function myself() { $args = func_get_args(); echo '<li>', self::myname(), '::myself - my args are ',var_export($args,TRUE),"\n"; } } class bar extends foo { function myname() { return 'bar'; } function test() { foo::myself('calling foo::myself'); bar::myself('calling bar::myself'); self::myself('calling self::myself'); parent::myself('calling parent::myself'); call_user_func_array(array('foo','myself'), array('call_user_func_array on array("foo","myself")')); call_user_func_array(array('bar','myself'), array('call_user_func_array on array("bar","myself")')); call_user_func_array(array('parent','myself'), array('call_user_func_array on array("parent","myself")')); call_user_func_array(array('self','myself'), array('call_user_func_array on array("self","myself")')); myself('calling myself'); call_user_func_array('myself', array('call_user_func_array on "myself"')); } } function myself() { echo '<li>i am the external function myself - my args are ', var_export(func_get_args(), TRUE), "\n"; } bar::test('testing',1,2); ?> ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=18926&edit=1