Maison >développement back-end >tutoriel php >Comment transmettre les méthodes de classe comme rappels : comprendre les mécanismes et les techniques

Comment transmettre les méthodes de classe comme rappels : comprendre les mécanismes et les techniques

Susan Sarandon
Susan Sarandonoriginal
2024-10-19 21:47:02990parcourir

How to Pass Class Methods as Callbacks: Understanding Mechanisms and Techniques

Comment transmettre des méthodes de classe en tant que rappels

Contexte

Dans certains scénarios, vous devrez peut-être transmettre des méthodes de classe en tant que rappels à d'autres fonctions pour plus d'efficacité. exécution de tâches spécifiques. Cet article vous guide à travers les différents mécanismes pour y parvenir.

Utilisation de la syntaxe appelable

Pour transmettre une fonction en tant que rappel, vous pouvez directement fournir son nom sous forme de chaîne. Cependant, cette méthode ne s'applique pas aux méthodes de classe.

Passer des méthodes d'instance

Les méthodes d'instance de classe peuvent être transmises sous forme de rappels en utilisant un tableau avec l'objet comme premier élément et le nom de la méthode comme premier élément. deuxième. Cette approche fonctionne à la fois à l'intérieur et à l'extérieur de la même classe.

<code class="php">// Inside the same class
$this->processSomething([$this, 'myCallback']);
$this->processSomething([$this, 'myStaticCallback']);

// Outside the same class
$myObject->processSomething([new MyClass(), 'myCallback']);
$myObject->processSomething([new MyClass(), 'myStaticCallback']);</code>

Passer des méthodes de classe statique

Les méthodes de classe statique ne nécessitent pas d'instance d'objet. Ils peuvent être transmis directement sous forme de tableau contenant le nom de la classe et le nom de la méthode.

<code class="php">// Inside the same class
$this->processSomething([__CLASS__, 'myStaticCallback']);

// Outside the same class
$myObject->processSomething(['\Namespace\MyClass', 'myStaticCallback']);
$myObject->processSomething(['\Namespace\MyClass::myStaticCallback']); // PHP 5.2.3+
$myObject->processSomething([MyClass::class, 'myStaticCallback']); // PHP 5.5.0+</code>

Options supplémentaires

Outre les méthodes mentionnées, vous pouvez également transmettre des fonctions anonymes comme rappels, mais cela peut nécessiter des modifications de la structure de votre code.

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