60 votes

Peut-on alias une fonction en php?

est-il possible d'aliaser une fonction avec un nom différent en PHP? si oui comment?

supposons que nous ayons cette fonction sleep ();

Existe-t-il un moyen rapide de créer un alias appelé wait ();

sans écrire ce code

 function wait ($seconds)  {
    sleep($seconds);
}
 

66voto

Lukman Points 10217

yup, function wait ($seconds) { sleep($seconds); } est la voie à suivre. Mais si vous êtes inquiet de devoir changer wait () si vous devez changer le nombre de paramètres de sleep (), vous voudrez peut-être procéder comme suit:

 function wait() { 
  return call_user_func_array("sleep", func_get_args());
}
 

63voto

Jon Points 194296

PHP 5.6+ seulement

À partir de PHP 5.6, il est possible d’aliaser une fonction en l’important:

 use function sleep as wait;
 

29voto

Federico Culloca Points 7533

Non, mais vous pouvez le faire:

 $wait = 'sleep';
$wait($seconds);
 

De cette façon, vous résolvez également les problèmes de nombre d'arguments

22voto

Ólafur Waage Points 40104

Vous pouvez aussi regarder lambdas si vous avez PHP 5.3

 $wait = function($v) { return sleep($v); };
 

9voto

Nathan Crause Points 170

Si vous n'êtes pas préoccupé par l'utilisation de l'instruction "eval" de PHP (que beaucoup de gens ont un réel problème, mais ce n'est pas mon cas), vous pouvez utiliser quelque chose comme ceci:

 function func_alias($target, $original) {
    eval("function $target() { \$args = func_get_args(); return call_user_func_array('$original', \$args); }");
}
 

Je l'ai utilisé lors de tests simples et cela a semblé bien fonctionner. Voici un exemple:

 function hello($recipient) {
    echo "Hello, $recipient\n";
}

function helloMars() {
    hello('Mars');
}

func_alias('greeting', 'hello');
func_alias('greetingMars', 'helloMars');

greeting('World');
greetingMars();
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X