"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > 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

Publié le 2024-11-06
Parcourir:575

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 à l'aide d'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.

// 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']);

Passer des méthodes de classe statique

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

// 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 

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.

Déclaration de sortie Cet article est réimprimé à l'adresse : 1729345515. En cas d'infraction, veuillez contacter [email protected] pour le supprimer.
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3