PHP Doku:: Invokes function args - reflectionfunction.invokeargs.html

Verlauf / Chronik / History: (7) anzeigen

Sie sind hier:
Doku-StartseitePHP-HandbuchFunktionsreferenzVariablen- und typbezogene ErweiterungenReflectionThe ReflectionFunction classReflectionFunction::invokeArgs

Ein Service von Reinhard Neidl - Webprogrammierung.

The ReflectionFunction class

<<ReflectionFunction::invoke

ReflectionFunction::isDisabled>>

ReflectionFunction::invokeArgs

(PHP 5 >= 5.1.0)

ReflectionFunction::invokeArgsInvokes function args

Beschreibung

public mixed ReflectionFunction::invokeArgs ( array $args )

Invokes args.

Warnung

Diese Funktion ist bis jetzt nicht dokumentiert. Es steht nur die Liste der Argumente zur Verfügung.

Parameter-Liste

args

The passed arguments to the function as an array, much like call_user_func_array() works.

Rückgabewerte

Returns the result of the invoked function

Beispiele

Beispiel #1 ReflectionFunction::invokeArgs() example

<?php
function title($title$name)
{
    return 
sprintf("%s. %s\r\n"$title$name);
}

$function = new ReflectionFunction('title');

echo 
$function->invokeArgs(array('Dr''Phil'));
?>

Das oben gezeigte Beispiel erzeugt folgende Ausgabe:

Dr. Phil

Beispiel #2 ReflectionFunction::invokeArgs() with references example

<?php
function get_false_conditions(array $conditions, array &$false_conditions)
{
    foreach (
$conditions as $condition) {
        if (!
$condition) {
            
$false_conditions[] = $condition;
        }
    }
}

$function_ref     = new ReflectionFunction('get_false_conditions');

$conditions       = array(truefalse, -101);
$false_conditions = array();

$function_ref->invokeArgs(array($conditions, &$false_conditions));

var_dump($false_conditions);
?>

Das oben gezeigte Beispiel erzeugt folgende Ausgabe:

array(2) {
  [0]=>
  bool(false)
  [1]=>
  int(0)
}

Anmerkungen

Hinweis:

If the function has arguments that need to be references, then they must be references in the passed argument list.

Siehe auch


Ein BenutzerBeitrag:
- Beiträge aktualisieren...
Andrea Giammarchi
17.02.2008 3:41
I encountered a weird problem with ReflectionFunction, described in ticket 44139 of PHP Bugs.

If for some reason you need to call with invoke, or invokeArgs, a function like array_unshift (that accepts internally the array by reference) you could use this code to avoid the generated warning or fatal error.

<?php
function unshift(){
   
$ref        = new ReflectionFunction('array_unshift');
   
$arguments    = func_get_args();
    return       
$ref->invokeArgs(array_merge(array(&$this->arr), $arguments));
}
?>

I don't know about performances (you can create an array manually too, starting from array(&$this->something) and adding arguments). However, it seems to work correctly without problems, at least until the send by reference will be usable with one single value ...



PHP Powered Diese Seite bei php.net
The PHP manual text and comments are covered by the Creative Commons Attribution 3.0 License © the PHP Documentation Group - Impressum - mail("TO:Reinhard Neidl",...)