Lassen Sie uns über die Vorteile der offiziellen Schreibweise von PHP-Abschlüssen sprechen

藏色散人
Freigeben: 2023-04-10 20:52:02
nach vorne
4039 Leute haben es durchsucht

Erstens lernen wir die offiziell erklärten anonymen PHP-Funktionen kennen: https://www.php.net/manual/zh/functions.anonymous.php

Was sind die Vorteile der offiziellen Art, PHP-Abschlüsse zu schreiben?

Spezifische Problembeschreibung:

<?php
class Cart
{
    const PRICE_BUTTER  = 1.00;
    const PRICE_MILK    = 3.00;
    const PRICE_EGGS    = 6.95;
    protected $products = array();
    public function add($product, $quantity)
    {
        $this->products[$product] = $quantity;
    }
    public function getQuantity($product)
    {
        return isset($this->products[$product]) ? $this->products[$product] :
            FALSE;
    }
    public function getTotal($tax)
    {
        $total = 0.00;
        $callback =
            function ($quantity, $product) use ($tax, &$total)
            {
                $pricePerItem = constant(__CLASS__ . "::PRICE_" .
                    strtoupper($product));
                $total += ($pricePerItem * $quantity) * ($tax + 1.0);
            };
        array_walk($this->products, $callback);
        return round($total, 2);
    }
}
$my_cart = new Cart;
// 往购物车里添加条目
$my_cart->add(&#39;butter&#39;, 1);
$my_cart->add(&#39;milk&#39;, 3);
$my_cart->add(&#39;eggs&#39;, 6);
// 打出出总价格,其中有 5% 的销售税.
print $my_cart->getTotal(0.05) . "\n";
// 最后结果是 54.29
?>
Copy
        $callback =
            function ($quantity, $product) use ($tax, &$total)
            {
                $pricePerItem = constant(__CLASS__ . "::PRICE_" .
                    strtoupper($product));
                $total += ($pricePerItem * $quantity) * ($tax + 1.0);
            };
Nach dem Login kopieren

Was ist der Unterschied zwischen diesem Code und foreach? Sollten die Anzahl und die Größe der Schleifen gleich sein?

Antwort:

kann den Code wiederverwendbar machen und mehr Möglichkeiten für die bereitgestellten Funktionen bieten.

Sortieren ist beispielsweise nichts anderes als Größenvergleich und anschließender Positionsaustausch. Die Logik des Positionsaustauschs ist einheitlich, es gibt jedoch viele Situationen beim Größenvergleich, sodass ein Abschlussrückruf bereitgestellt wird, damit der Ort, an dem er verwendet wird, entscheiden kann wer ist größer und wer kleiner.

Die andere besteht darin, den Code durch einige grundlegende Methoden lesbarer zu machen.

Zum Beispiel wäre es angemessener, Ihr Beispiel in array_reduce zu ändern, damit andere, wenn sie es betrachten, wahrscheinlich erkennen können, welchen Wert Sie in eine einzelne Variable berechnen möchten. Es ist jedoch am besten, die Abschlussfunktion direkt in die Parameter zu schreiben.

Bei der Array-Durchquerung hatte foreach in den frühen Tagen viele Probleme, und eine unsachgemäße Verwendung führte zu unnötigen Fehlern.

Zum Beispiel

// 这样用,可能会在后续的逻辑中出现bug
foreach ($arr as &$item) {
   $item[&#39;ddd&#39;] = &#39;ddd&#39;;
}
// 这样用,就可以避免
array_walk($arr, function (&$item) {
   $item[&#39;ddd&#39;] = &#39;ddd&#39;;
});
Nach dem Login kopieren

Wie auch immer, es gibt Vor- und Nachteile, Geschwindigkeit wird sich natürlich auswirken.

Empfohlenes Lernen: „PHP-Video-Tutorial

Das obige ist der detaillierte Inhalt vonLassen Sie uns über die Vorteile der offiziellen Schreibweise von PHP-Abschlüssen sprechen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
php
Quelle:learnku.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