超越PHP PHP动态 | 经典文章 | CLASS | 相关下载 | 常见问题 | FORUM | WIKI | 在线手册
Site search:    
<call_user_func_arraycreate_function>
Last updated: Fri, 22 Jun 2007

call_user_func

(PHP 3>= 3.0.3, PHP 4 , PHP 5)

call_user_func --  Call a user function given by the first parameter

Description

mixed call_user_func ( callback function [, mixed parameter [, mixed ...]])

Call a user defined function given by the function parameter. Take the following:

<?php
function barber($type)
{
   echo
"You wanted a $type haircut, no problem";
}
call_user_func('barber', "mushroom");
call_user_func('barber', "shave");
?>

Object methods may also be invoked statically using this function by passing array($objectname, $methodname) to the function parameter.

<?php
class myclass {
   function
say_hello()
   {
       echo
"Hello!\n";
   }
}

$classname = "myclass";

call_user_func(array($classname, 'say_hello'));
?>

注: Note that the parameters for call_user_func() are not passed by reference.

<?php
function increment(&$var)
{
  
$var++;
}

$a = 0;
call_user_func('increment', $a);
echo
$a; // 0

call_user_func_array('increment', array(&$a)); // You can use this instead
echo $a; // 1
?>

See also: is_callable(), call_user_func_array(), and information about the callback type




add a note add a note User Contributed Notes
call_user_func
andreyhristov at yahoo dot com
22-Aug-2000 09:09
Let say we construct somehow the name of the function. In some cases we can use nested  'switch'  but the alternative is to to use for and parse a string to construct  the  function  name, after than  we also can construct and the
parameter(s) for it. It  is like using of eval. I use it in one of my projects to construct a name of nested array like
$ar['1999'['july']['29']['19'] , etc. the problem is in that I'm parsing a string to construct the name. If I've {1:2:3}  the array name will be $ar['1']['2']['3'] but if i've
{1:2:3:4:5} it will  be $ar['1']['2']['3']['4']['5'].  Eval is the only way (very hard because of characters escaping is needed)  to do it. So this function is of the type of EVAL().
USE IT wherever your script is  'self-modified';

<call_user_func_arraycreate_function>
 Last updated: Fri, 22 Jun 2007
view source | feedback | send page | sitemap | aboutus   
Copyright ® 2002-2003 PHPE.NET. All rights reserved
Last updated:2002-11-22