[Stärkung der PHP-Reihe] Warenkorbcode-Beschreibung Anonyme PHP-Funktionen
1. Anonyme Funktionen (anonyme Funktionen), auch Abschlüsse genannt, ermöglichen die vorübergehende Erstellung einer Funktion mit nicht spezifiziertem Namen. Der Wert, der am häufigsten als Callback-Funktionsargument verwendet wird. Natürlich gibt es auch andere Anwendungen.
2. Verwendung:
1) Als Wert einer Variablen:
Abschlussfunktionen können auch als Wert von Variablen verwendet werden. PHP konvertiert diesen Ausdruck automatisch in eine Objektinstanz der integrierten Klasse Closure. Die Methode zum Zuweisen eines Abschlussobjekts zu einer Variablen ist dieselbe wie die Syntax der gewöhnlichen Variablenzuweisung, und am Ende muss ein Semikolon hinzugefügt werden
2) Variablen vom übergeordneten Bereich erben:
Abschlussvariablen können vom übergeordneten Bereich geerbt werden. Solche Variablen sollten mithilfe des Sprachkonstrukts use übergeben werden.
3) Ein vollständiges Beispiel, illustriert mit Warenkorbcode:
<?php // 一个基本的购物车,包括一些已经添加的商品和每种商品的数量。 // 其中有一个方法用来计算购物车中所有商品的总价格,该方法使 // 用了一个 closure 作为回调函数。 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('butter', 1); $my_cart->add('milk', 3); $my_cart->add('eggs', 6); // 打出出总价格,其中有 5% 的销售税. print $my_cart->getTotal(0.05) . "\n"; // 最后结果是 54.29 ?>
3. Referenz:
1) Offizielle PHP-Beschreibung „Anonym Funktion': http://www.php.net/manual/zh/functions.anonymous.php
2) Die Funktion „constant()“ gibt einen konstanten Wert zurück: http://www.runoob com/. php/func-misc-constant.html
3) Die Funktion array_walk() wendet benutzerdefinierte Funktionen auf jedes Element im Array an: http://www.w3school.com.cn/php/ func_array_walk. asp
4) Die Funktion „round()“ rundet Gleitkommazahlen: http://www.w3school.com.cn/php/func_math_round.asp