7 votes

php Définir une fonction anonyme dans une instance

Je débute en PHP, et je me demande s'il existe un moyen d'ajouter une fonction anonyme à une instance de classe.

Par exemple, disons...

class A{
    public B;
}

$c = new A();

//This is where I am getting a little confused...
//The following wont work

$c->B = function(){echo('HelloWorld');};
$c->B();

Ce que j'espère faire, c'est réutiliser le même bout de code dans un grand nombre d'applications différentes, et faire en sorte que je puisse simplement "échanger" et remplacer des fonctions dans des cas spécifiques.

J'utilise php5.3 (les fonctions anonymes devraient donc fonctionner, mais pas de la manière dont je les utilise).

Merci beaucoup pour votre temps !

-GK

1voto

Qeremy Points 3719

Ce n'est plus un problème avec PHP 7 ;

// no error
$result = ($this->anonFunc)();
$result = ($this->anonFunc)($arg1, $arg2, ...);

En savoir plus AST .

0voto

Lee Davis Points 1842

Plutôt que d'accrocher une méthode magique __call dans votre classe, vous pouvez exécuter directement l'appelant en utilisant la méthode suivante call_user_func .

class A {
    public $b;
}

$c = new A();
$c->b = function(){echo('HelloWorld');};

call_user_func($c->b);    // HelloWorld

Évidemment, il serait bon que PHP fournisse une syntaxe permettant d'exécuter directement cette opération.

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