Doc #54130 [Com]: call_user_func description is too general

From: Date: Sat, 07 Jan 2012 23:27:37 +0000
Subject: Doc #54130 [Com]: call_user_func description is too general
References: 1  Groups: php.doc.bugs 
Request: Send a blank email to doc-bugs+get-7748@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=54130&edit=1 ID: 54130 Comment by: hello at apfelbox dot net Reported by: ajrattink at correct dot net Summary: call_user_func description is too general Status: No Feedback Type: Documentation Problem Package: Documentation problem PHP Version: 5.3.5 Assigned To: frozenfire Block user comment: N Private report: N New Comment: Sorry, forgot to mention: tested on OSX with PHP 5.3.6 (not the newest version, I know..) Previous Comments: ------------------------------------------------------------------------ [2012-01-07 23:25:47] hello at apfelbox dot net Hi, I can confirm that call_user_func does not seem to mind namespaces: ---- namespace A; class X { public static function f () { echo 'c'; } } X::f(); call_user_func(array('X', 'f')); ----- Expected: cc ----- Actual: c Warning: call_user_func() expects parameter 1 to be a valid callback, class 'X' not found in .... ----- One comment to the last sentence of the original commenter: there is a way: just use the fully qualified name, in my example call_user_func(array('\A\X', 'f')); will work as expected. ------------------------------------------------------------------------ [2011-12-05 23:00:39] frozenfire@php.net So, just to clarify what you're saying: It's not currently possible to use call_user_func with a callback pointing to a static method in an imported class? If that's the case, this seems more like a Zend bug than anything (zend_call_function is what handles these calls). ------------------------------------------------------------------------ [2011-03-01 17:03:57] ajrattink at correct dot net Description: ------------ --- From manual page: http://www.php.net/function.call-user-func#Parameters --- The manual states that call_user_func(array($classname, $methname), ...) will call the static method of the class indicated by +classname+ but fails to mention that it does not work if the class is imported in a namespace. To avoid disappointed programmers, I think it should. Example: use X as Y; call_user_func(array('Y', 'f'), ...) will not work. This means that if the original class caused a nameconflict there is absolutely no way of calling it. Ever. ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=54130&edit=1

« previous php.doc.bugs (#7748) next »