Fonctions sur la gestion des fonctions
PHP Manual

call_user_func

(PHP 4, PHP 5)

call_user_funcAppelle une fonction utilisateur

Description

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

Appelle une fonction utilisateur fournie par le paramètre function .

Liste de paramètres

function

La fonction à appeler. Les méthodes de classes peuvent être appelées statiquement en passant array($classname, $methodname) à ce paramètre. De plus, les méthodes de classe d'un objet peuvent être appelées en passant array($objectinstance, $methodname) à ce paramètre.

parameter

0 ou plus de paramètres à passer à la fonction.

Note: Notez que les paramètres pour call_user_func() ne sont pas passés par référence.

Exemple #1 Exemple avec call_user_func() par référence

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

$a 0;
call_user_func('increment'$a);
echo 
$a."\n"

call_user_func_array('increment', array(&$a)); 
// Vous pouvez utiliser ceci à la place jusqu'en PHP 5.3
echo $a."\n"
?>

L'exemple ci-dessus va afficher :

0
1


Valeurs de retour

Retourne le résultat de la fonction, ou FALSE si une erreur survient.

Exemples

Exemple #2 Exemple avec call_user_func()

<?php
function barber($type)
{
    echo 
"Vous voulez une coupe $type, aucun problème";
}
call_user_func('barber'"au bol");
call_user_func('barber'"au rasoir");
?>

L'exemple ci-dessus va afficher :

Vous voulez une coupe au bol, aucun problème
Vous voulez une coupe au rasoir, aucun problème

Exemple #3 Exemple avec call_user_func() en utilisant un espace de noms

<?php

namespace Foobar;

class 
Foo {
    static public function 
test() {
        print 
"Hello world!\n";
    }
}

call_user_func(__NAMESPACE__ .'\Foo::test'); // As of PHP 5.3.0
call_user_func(array(__NAMESPACE__ .'\Foo''test')); // As of PHP 5.3.0
?>

L'exemple ci-dessus va afficher :

Hello world!
Hello world!

Exemple #4 Utilisation d'une méthode de classe avec call_user_func()

<?php

class maclasse {
    static function 
dit_bonjour()
    {
        echo 
"Bonjour!\n";
    }
}

$classname "maclasse";

call_user_func(array($classname'dit_bonjour'));
call_user_func($classname .'::dit_bonjour');    // Depuis 5.2.3

$monobjet = new maclasse();

call_user_func(array($monobjet'dit_bonjour'));

?>

L'exemple ci-dessus va afficher :

Bonjour!
Bonjour!
Bonjour!

Exemple #5 Utilisation d'une fonction lambda avec call_user_func()

<?php
call_user_func
(function($arg) { print "[$arg]\n"; }, 'test'); /* Depuis PHP 5.3.0 */
?>

L'exemple ci-dessus va afficher :

[test]

Voir aussi


Fonctions sur la gestion des fonctions
PHP Manual