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.
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.
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>
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>
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!