Maison  >  Article  >  développement back-end  >  Comment puis-je utiliser efficacement les rappels en PHP ?

Comment puis-je utiliser efficacement les rappels en PHP ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-27 20:34:30114parcourir

How Can I Use Callbacks Effectively in PHP?

Implémentation des rappels en PHP

Le terme « rappel » en PHP englobe à la fois les chaînes et les tableaux qui fonctionnent comme des pointeurs de fonction. En PHP 4, la syntaxe suivante est apparue :

  • $cb1 = 'someGlobalFunction';
  • $cb2 = ['ClassName', 'someStaticMethod'];
  • $cb3 = [$object, 'somePublicMethod'];

Bien que PHP 5.2.3 ait introduit une syntaxe appelable, les chaînes contenant une telle syntaxe ne peuvent pas être directement invoquées. La syntaxe héritée pour PHP 4 inclut :

  • $cb3 = array(&$object, 'somePublicMethod');

L'extrait de code suivant démontre une utilisation sûre des valeurs appelables :

<code class="php">if (is_callable($cb2)) {
    $returnValue = call_user_func($cb2, $arg1, $arg2);
}</code>

Les versions PHP modernes prennent en charge l'invocation des trois premiers formats ci-dessus directement en tant que $cb(). De plus, call_user_func et call_user_func_array prennent en charge tous les formats présentés.

Remarques et mises en garde :

  • Les fonctions/classes avec espace de noms nécessitent des noms complets, par exemple. ['VendorPackageFoo', 'method'].
  • call_user_func ne prend pas en charge le passage d'objets non-objets par référence. Utilisez call_user_func_array ou $cb(); dans les versions PHP ultérieures.
  • Les objets avec une méthode __invoke() (y compris les fonctions anonymes) peuvent être utilisés comme rappels, mais ne sont généralement pas associés au terme traditionnel de « rappel ».
  • Legacy create_function () crée une fonction globale et renvoie son nom. Utilisez plutôt des fonctions anonymes.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn