Rumah > pembangunan bahagian belakang > tutorial php > Mari kita bincangkan tentang faedah cara rasmi menulis penutupan PHP

Mari kita bincangkan tentang faedah cara rasmi menulis penutupan PHP

藏色散人
Lepaskan: 2023-04-10 20:52:02
ke hadapan
4065 orang telah melayarinya

Pertama, mari kita pelajari tentang fungsi anonymous PHP yang dijelaskan secara rasmi: https://www.php.net/manual/zh/functions.anonymous.php

php penutupan Apakah faedah penulisan rasmi?

Perihalan masalah terperinci:

<?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);
            };
Salin selepas log masuk

Apakah perbezaan antara kod ini dan foreach? Sekiranya bilangan gelung dan skala adalah sama?

Jawapan:

boleh menjadikan kod lebih boleh digunakan semula dan memberikan lebih banyak kemungkinan untuk fungsi yang disediakan.

Sebagai contoh, pengisihan tidak lebih daripada membandingkan saiz dan kemudian bertukar kedudukan Logik pertukaran kedudukan adalah bersatu, tetapi terdapat banyak situasi apabila membandingkan saiz, jadi panggilan balik penutupan disediakan supaya tempat di mana ia. digunakan boleh menentukan sendiri Siapa yang lebih tua dan siapa yang lebih muda.

Yang lain adalah untuk menjadikan kod lebih mudah dibaca melalui beberapa kaedah asas.

Sebagai contoh, adalah lebih sesuai untuk menukar contoh anda kepada array_reduce, supaya apabila orang lain melihatnya, mereka mungkin dapat menyedari nilai yang anda cuba kira ke dalam pembolehubah tunggal. Tetapi yang terbaik adalah menulis fungsi penutupan terus dalam parameter.

Untuk traversal tatasusunan, pada awalnya, foreach mempunyai banyak masalah, dan penggunaan yang tidak betul akan menghasilkan pepijat yang tidak diperlukan.

Contohnya,

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

Apa-apa pun, ada kebaikan dan keburukan, kelajuan sudah tentu akan memberi impak.

Pembelajaran yang disyorkan: "Tutorial Video PHP"

Atas ialah kandungan terperinci Mari kita bincangkan tentang faedah cara rasmi menulis penutupan PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
php
sumber:learnku.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan