Rechercher une fonction PHP

call_user_func_array

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

call_user_func_arrayAppelle une fonction de rappel avec les paramètres rassemblés en tableau

Description

mixed call_user_func_array ( callable $callback , array $param_arr )

Appelle la fonction de rappel callback fournie avec les paramètres param_arr, rassemblés dans un tableau.

Retour à la première page de Manuel PHP  Table des matières Haut

Liste de paramètres

callback

La fonction de rappel à appeler.

param_arr

Les paramètres à passer à la fonction de rappel, sous la forme d'un tableau indexé.

Retour à la première page de Manuel PHP  Table des matières Haut

Valeurs de retour

Retourne la valeur retournée par la fonction de rappel, ou FALSE si une erreur survient.

Retour à la première page de Manuel PHP  Table des matières Haut

Historique

Version Description
5.3.0 L'interprétation des mots-clés du modèle objet comme parent et self a changé. Avant, les appeler avec la syntaxe à double deux-points envoyait une erreur E_STRICT à cause de l'interprétation statique.

Retour à la première page de Manuel PHP  Table des matières Haut

Exemples

Exemple #1 Exemple avec call_user_func_array()

<?php
function foobar($arg$arg2) {
    echo 
__FUNCTION__" got $arg and $arg2\n";
}
class 
foo {
    function 
bar($arg$arg2) {
        echo 
__METHOD__" got $arg and $arg2\n";
    }
}


// Appel de la fonction foobar() avec 2 arguments
call_user_func_array("foobar", array("one""two"));

// Appel de la méthode $foo->bar() avec 2 arguments
$foo = new foo;
call_user_func_array(array($foo"bar"), array("three""four"));
?>

L'exemple ci-dessus va afficher quelque chose de similaire à :

foobar got one and two
foo::bar got three and four

Exemple #2 Exemple avec call_user_func_array() en utilisant un espace de nom

<?php

namespace Foobar;

class 
Foo {
    static public function 
test($name) {
        print 
"Bonjour {$name}!\n";
    }
}

// Depuis PHP 5.3.0
call_user_func_array(__NAMESPACE__ .'\Foo::test', array('Hannes'));

// Depuis PHP 5.3.0
call_user_func_array(array(__NAMESPACE__ .'\Foo''test'), array('Philip'));

?>

L'exemple ci-dessus va afficher :

Bonjour Hannes!
Bonjour Philip!

Exemple #3 Utilisation d'une fonction lambda

<?php

$func 
= function($arg1$arg2) {
    return 
$arg1 $arg2;
};

var_dump(call_user_func_array($func, array(24))); /* Depuis PHP 5.3.0 */

?>

L'exemple ci-dessus va afficher :

int(8)

Exemple #4 En passant une valeur par référence

<?php

function mega(&$a){
    
$a 55;
    echo 
"function mega \$a=$a\n";
}
$bar 77;
call_user_func_array('mega',array(&$bar));
echo 
"global \$bar=$bar\n";

?>

L'exemple ci-dessus va afficher :

function mega $a=55
global $bar=55

Retour à la première page de Manuel PHP  Table des matières Haut

Notes

Note:

Avant PHP 5.4, les variables référencées dans le paramètre param_arr sont passées dans la fonction par référence, indépendamment du fait que la fonction s'attend à ce que le paramètre soit passé par référence. Le fait d'utiliser ce mode pour passer les valeurs au paramètre n'émet pas de notice, mais c'est tout de même obsolète et a été supprimé depuis PHP 5.4. En outre, ceci ne s'applique pas aux fonctions internes, qui voient leurs signatures de fonctions honorées. Le fait de passer une valeur lorsque la fonction s'attend à un paramètre passé par référence produit une alerte et la fonction call_user_func() retournera FALSE (il y a, cependant, une exception pour les valeurs passées par référence count = 1, comme en litéral, vu qu'elle peut être converti en référence sans problème, mais aussi parceque l'écriture sur ces valeurs n'a aucun effet - ne vous fiez pas à ce détail, sachant que son comportement est discutable).

Note:

Notez que les fonctions de rappel enregistrées avec des fonctions comme call_user_func() et call_user_func_array() ne seront pas appelées si une exception n'est pas interceptée alors qu'elle a été lancée dans une précédente fonction de rappel.

Retour à la première page de Manuel PHP  Table des matières Haut

Voir aussi

Rechercher une fonction PHP

Document créé le 30/01/2003, dernière modification le 26/10/2018
Source du document imprimé : https://www.gaudry.be/php-rf-function.call-user-func-array.html

L'infobrol est un site personnel dont le contenu n'engage que moi. Le texte est mis à disposition sous licence CreativeCommons(BY-NC-SA). Plus d'info sur les conditions d'utilisation et sur l'auteur.

Références

  1. Consulter le document html Langue du document :fr Manuel PHP : http://php.net

Ces références et liens indiquent des documents consultés lors de la rédaction de cette page, ou qui peuvent apporter un complément d'information, mais les auteurs de ces sources ne peuvent être tenus responsables du contenu de cette page.
L'auteur de ce site est seul responsable de la manière dont sont présentés ici les différents concepts, et des libertés qui sont prises avec les ouvrages de référence. N'oubliez pas que vous devez croiser les informations de sources multiples afin de diminuer les risques d'erreurs.

Table des matières Haut