Heim > Backend-Entwicklung > PHP-Tutorial > Detaillierte Einführung in PHP-Verschlüsse (mit Code)

Detaillierte Einführung in PHP-Verschlüsse (mit Code)

不言
Freigeben: 2023-04-05 19:58:01
nach vorne
2467 Leute haben es durchsucht

Dieser Artikel bietet Ihnen eine detaillierte Einführung in PHP-Verschlüsse (mit Code). Freunde in Not können darauf verweisen.

Ich habe viele Erklärungen zu Schließungen in PHP gelesen, aber es ist sehr schwierig, sie basierend auf meinem eigenen Verständnis zu beschreiben. Bitte weisen Sie darauf hin

Wie wir alle wissen, weiß jeder, dass der Abschluss von PHP function () use (){};

Dieser Artikel ist in 3 Schritte unterteilt:

1. Erklären Sie die Verwendung von Verschlüssen
1: Verwendung von „use“ in Verschlüssen – Teil 1

function () use($param){};
$param = 1;
$data = function () use ($param)
{
    var_dump($param);    
};

$data();

$param = 2;
$data();

// 输出结果为
1
1
Nach dem Login kopieren

Analyseergebnisse: Die Verwendung von „use“ entspricht der Verwendung von Objekte (Klassenverwendung), $data(), Zeigt die einmalige Instanziierung an. Die Sprache weist jedoch die Merkmale des -Textflusses auf. Beim zweiten Mal wird nicht erneut instanziiert , das Ausgabeergebnis ist also das obige Ergebnis; $data()

2: Verwendung in Abschlüssen – Teil 2

$param = 1;
$data = function () use ($param)
{
    var_dump($param);    
};

$data();

$param = 2;
$data = function () use ($param)
{
    var_dump($param);    
};
$data();

// 输出结果为
1
2
Nach dem Login kopieren
Analyseergebnisse: In Form eines

Textstroms Die Variable wird erneut instanziiert, daher ist die gespeicherte Variable 2 und die endgültige Ausgabe ist 2; 🎜>

    $param = 1;
    $data = function ($obj) use ($param)
    {
        var_dump($obj);
        var_dump($param);    
    };
    $data(2);
    
    $data(3);
    
    $param = 2;
    $data(4);
    // 输出
    2
    1
    
    3
    1
    
    4
    1
Nach dem Login kopieren
Analyseergebnisse: Die Klammern nach der Funktion entsprechen der Funktion. Verwendung: Bei jedem Aufruf der Funktion werden dieselben Daten übergeben. Dies bedeutet die folgende Verwendung Die Instanz wird sich nach einmaliger Zeit nicht ändern, daher kann sich obj jederzeit ändern.

2. Abschlussinstanz
function ($obj) use($param){}; Beispiel 1:
    $arr = [
        '米' => ['咸粥', '甜粥', '米饭'], 
        '面' => ['面条', '花卷', '馒头'], 
    ];

    $param = '';
    $bag = function ($data) use ($param)
    {
        $l = count($data);
        return $data[rand(0, $l-1)];
    };

    $eat_arr = [];
    
    foreach ($arr as $key => $value) {
        $each_arr[] = '吃'.$key.':'.$bag($value);        
    }

    echo implode(',', $each_arr);
    
    // 输出
    吃米:米饭,  吃面:面条
    吃米:甜粥,  吃面:馒头
Nach dem Login kopieren

Beispiel 2:

    $arr = [
        '米' => ['咸粥', '甜粥', '米饭'], 
        '面' => ['面条', '花卷', '馒头'], 
    ];

    $eat_arr = [];
    
    foreach ($arr as $key => $value) 
    {
        $bag = function () use ($value)
        {
            $l = count($value);
            return $value[rand(0, $l-1)];
        };

        $each_arr[] = '吃'.$key.':'.$bag();        
    }

    echo implode(',', $each_arr);
    // 输出
    吃米:甜粥, 吃面:面条
    吃米:甜粥, 吃面:花卷
Nach dem Login kopieren

3. Abschlusszusammenfassung

Abschluss Zusammenfassend Der Unterschied zur Funktion besteht darin, dass bei der Verwendung ein zusätzlicher Zwischenwert für die Verwendung hinzugefügt wird. Beachten Sie bitte, dass die Funktion () nach

eine variable Variable ist und die Variable in use() eine Instanz nach

ist Für Variablen, die sich nicht ändern, ist es nicht sehr sinnvoll, einen Abschluss in einer Schleife zu schreiben, was einer Instanziierung jedes Mal entspricht. Daher kann der Abschluss geschrieben werden, indem vor dem Aufruf eine Methode definiert wird.

Der wahre Unterschied zwischen Abschlüssen und Funktionen:

Funktion: kapselt mehrere Aufrufe gleichzeitig. Schließung: Wird nur von dieser Methode verwendet, der Kopplungsgrad ist so niedrig, dass er ignoriert werden kann.

Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in PHP-Verschlüsse (mit Code). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:segmentfault.com
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage