Inhaltsverzeichnis
Anonymität beziehen in PHP-Funktion und Abschlussfunktion
Anonyme Funktionen
Closure-Funktion
Heim Backend-Entwicklung PHP-Tutorial Detaillierte Erklärung anonymer Funktionen und Abschlussfunktionen in PHP

Detaillierte Erklärung anonymer Funktionen und Abschlussfunktionen in PHP

Apr 11, 2018 pm 05:53 PM
php 函数

Der Inhalt dieses Artikels besteht darin, Ihnen eine detaillierte Erklärung der anonymen Funktionen und Schließungsfunktionen in PHP zu geben. Freunde in Not können sich auf

Anonymität beziehen in PHP-Funktion und Abschlussfunktion


Tags: anonyme Funktion Abschlussfunktion PHP-Abschlussfunktion PHP anonyme Funktion Funktionsverwendung


Einführung: Anonym Funktionen und Abschlussfunktionen sind keine besonders fortgeschrittenen Kenntnisse, aber viele Freunde, die gerade erst anfangen, sind immer verwirrt, weil jeder es gewohnt ist, Funktionen nur zum Aufrufen zu schreiben. Wofür werden anonyme Funktionen und Abschlussfunktionen verwendet?

Anonyme Funktionen

Die offizielle Erklärung von PHP lautet wie folgt:
Anonyme Funktionen (Anonyme Funktionen), auch Abschlüsse genannt, ermöglichen die vorübergehende Erstellung einer Funktion ohne angegebenen Namen . Der Wert, der am häufigsten als Callback-Funktionsargument verwendet wird. Natürlich gibt es auch andere Anwendungen.

Was hier gesagt wird, ist sehr einfach, es kann als Rückruffunktion verwendet werden. Das folgende Beispiel ist als Rückruffunktion

1

2

3

4

5

6

<?php

echo preg_replace_callback('~-([a-z])~', function ($match) {

    return strtoupper($match[1]);

}, 'hello-world');

// 输出 helloWorld

?>

Nach dem Login kopieren

Im obigen Beispiel , preg_replace_callback Die Funktion erfordert drei Parameter. Der erste Parameter ist ein regulärer Ausdruck, der zum Abgleichen von Daten verwendet wird, der zweite Parameter ist eine Funktion und der dritte Parameter ist die Zeichenfolge, die abgeglichen werden muss Es sieht wie folgt aus

1

2

3

4

5

6

7

8

<?php

$testFunc = function ($match) {

        return strtoupper($match[1]);

    };

  

 echo preg_replace_callback('~-([a-z])~', $testFunc, 'hello-world');

 // 输出 helloWorld

 ?>

Nach dem Login kopieren

Aber wir sehen, dass wir diese Methode nur einmal verwenden müssen, sodass es nicht nötig ist, sie erneut zu benennen und sie nicht einer Variablen (dem Prozess) zuzuweisen der Zuweisung von Werten zu Variablen: PHP konvertiert diesen Ausdruck automatisch in eine Objektinstanz der integrierten Klasse „Closure“ und weist ihn einer Variablen zu)

Closure-Funktion

Anonyme Funktionen in PHP werden auch Abschlussfunktionen genannt, daher gibt es keinen Unterschied. Aber das Konzept des Abschlusses im allgemeinen Sinne ist nicht so. Lassen Sie uns zunächst über den Abschluss im herkömmlichen Sinne sprechen und einen Artikel zum Vergleich von Abschlüssen in js mit Abschlüssen (anonymen Funktionen) in PHP bereitstellen.
Javascript-Abschluss (Closure) lernen - Ruan Yifeng

In PHP gibt es eigentlich keine Abschlussfunktion im herkömmlichen Sinne, da Funktionen in PHP keine Variablen im Gültigkeitsbereich aufrufen können. Wie folgt:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

<?php

    function a(){

        $a = 11;       

        function b(){

            $b = 22;           

            echo $a;           

            echo $b;

        }

        b();

    }

    a();

    //报Notice:Undefined variable: a in index.php on line 6

    //22

    ?>

Nach dem Login kopieren

Aus dem obigen Artikel wissen wir, dass dies in js möglich ist. Daher werden anonyme Funktionen in PHP auch als Abschlussfunktionen bezeichnet. Sie können auch Variablen aus dem übergeordneten Bereich an die Abschlussfunktion übergeben (wodurch ein ähnlicher Effekt erzielt wird wie beim Abrufen von übergeordneten Bereichsvariablen durch js). Das Schlüsselwort „use“ wird in PHP wie folgt verwendet >

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

<?php

$count = 0;

 

$a = function()

{ var_dump($count); };

 

$b = function() use ($count)

{ var_dump($count); };

 

$count++;

 

$c = function() use (&$count)

{ var_dump($count); };

 

$count++;

 

$a();    // null   Notice: Undefined variable: count in

$b();    // int 0

$c();    // int 2

$count++;

$b();    // int 0

 

?>

Nach dem Login kopieren
Unterscheidet sich die Ausgabe des obigen Beispiels von Ihrer Meinung?

Analyse: Die Abschlussfunktion (anonyme Funktion) verwendet use, um die Nebeneffektdomänenvariable zu erhalten, wenn die Funktion definiert ist, unabhängig davon, wann sie aufgerufen wird. Wenn Sie beim Aufruf den Variablenwert erhalten möchten, müssen Sie ihn als Referenz übergeben. Die Verwendung hängt vom Nutzungsszenario ab.

Listet mehrere gängige Szenarien auf

  1. als Rückruffunktion

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    //一个我们使用过的例子

    <?php/*

     * 菜谱拆分食物后的拼接

     * 参数均不能为空

     * */public function mergeFoodsStr($str,array $mapping){

     //        $str = '白菜半棵、__2__鲍菇两只、__0__一根,__1__两根,三者比例为100:100:15,酱油5克,香油2克,盐1克。';//        $mapping = array(//            0 =>array('name' => '胡萝卜','id' =>  '81' ),//            1 =>array ( 'name' => '萝卜', 'id' =>  '72'),//            2 =>array ( 'name' =>  '杏', 'id' => '1841')//        );

        if(empty($str) || empty($mapping)){        return false;

        }    $strNew = preg_replace_callback('"|__(\d)__|" ',function ($matches) use ($mapping){

            return $mapping[$matches[1]]['name'];

        },$str);    $this->log('拼接后的食材字符串',$strNew);    return $strNew;

    }?>

    Nach dem Login kopieren
  2. Wenn Es handelt sich um eine Funktion zur einmaligen Verwendung, die nicht wiederverwendet werden kann. Sie können die Abschlussfunktion

  3. Verwenden Sie die Funktion array_work() mit der anonymen Funktion, um die Anzahl der foreach zu reduzieren Schichten

  4. Warten

  5. Das obige ist der detaillierte Inhalt vonDetaillierte Erklärung anonymer Funktionen und Abschlussfunktionen in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
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

Heiße Artikel -Tags

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian

CakePHP Datum und Uhrzeit CakePHP Datum und Uhrzeit Sep 10, 2024 pm 05:27 PM

CakePHP Datum und Uhrzeit

CakePHP-Datei hochladen CakePHP-Datei hochladen Sep 10, 2024 pm 05:27 PM

CakePHP-Datei hochladen

CakePHP-Routing CakePHP-Routing Sep 10, 2024 pm 05:25 PM

CakePHP-Routing

CakePHP-Projektkonfiguration CakePHP-Projektkonfiguration Sep 10, 2024 pm 05:25 PM

CakePHP-Projektkonfiguration

Besprechen Sie CakePHP Besprechen Sie CakePHP Sep 10, 2024 pm 05:28 PM

Besprechen Sie CakePHP

CakePHP-Kurzanleitung CakePHP-Kurzanleitung Sep 10, 2024 pm 05:27 PM

CakePHP-Kurzanleitung

So richten Sie Visual Studio-Code (VS-Code) für die PHP-Entwicklung ein So richten Sie Visual Studio-Code (VS-Code) für die PHP-Entwicklung ein Dec 20, 2024 am 11:31 AM

So richten Sie Visual Studio-Code (VS-Code) für die PHP-Entwicklung ein

See all articles