Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann ich Callbacks in PHP effektiv nutzen?

Wie kann ich Callbacks in PHP effektiv nutzen?

Susan Sarandon
Susan SarandonOriginal
2024-10-27 20:34:30114Durchsuche

How Can I Use Callbacks Effectively in PHP?

Rückrufe in PHP implementieren

Der Begriff „Rückruf“ umfasst in PHP sowohl Zeichenfolgen als auch Arrays, die als Funktionszeiger fungieren. In PHP 4 entstand die folgende Syntax:

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

Obwohl PHP 5.2.3 eine aufrufbare Syntax eingeführt hat, können Zeichenfolgen, die eine solche Syntax enthalten, nicht direkt aufgerufen werden. Die Legacy-Syntax für PHP 4 umfasst:

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

Der folgende Codeausschnitt demonstriert die sichere Verwendung aufrufbarer Werte :

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

Moderne PHP-Versionen unterstützen den direkten Aufruf der ersten drei oben genannten Formate als $cb(). Darüber hinaus unterstützen call_user_func und call_user_func_array alle vorgestellten Formate.

Hinweise und Vorsichtsmaßnahmen:

  • Namespace-Funktionen/-Klassen erfordern vollständig qualifizierte Namen, z. B. ['VendorPackageFoo', 'method'].
  • call_user_func unterstützt nicht die Übergabe von Nicht-Objekten als Referenz. Verwenden Sie call_user_func_array oder $cb(); in späteren PHP-Versionen.
  • Objekte mit einer __invoke()-Methode (einschließlich anonymer Funktionen) können als Rückrufe verwendet werden, werden jedoch normalerweise nicht mit dem traditionellen „Rückruf“-Begriff verknüpft.
  • Legacy create_function () erstellt eine globale Funktion und gibt ihren Namen zurück. Verwenden Sie stattdessen anonyme Funktionen.

Das obige ist der detaillierte Inhalt vonWie kann ich Callbacks in PHP effektiv nutzen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn