SORU
30 HAZİRAN 2009, Salı


PHP fonksiyonu " ne 5.3.0,; kullanmak" tanımlayıcı?

PHP 5.3.0 bazı özellikler bakıyorum ve oldukça komik görünüyor sitesinde bazı kodlar karşılaştım:

public function getTotal($tax)
{
    $total = 0.00;

    $callback =
        /* This line here: */
        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);
}

örnek olarak üzerinde: http://www.php.net/manual/en/functions.anonymous.php

Herkes bunu biliyor mu? Herhangi bir belge? Ve kötü görünüyor, şimdiye kadar kullanılmalıdır?

CEVAP
24 NİSAN 2012, Salı


Basit bir cevap.

function ($quantity) use ($tax, &$total) { .. };

  1. Kapatma fonksiyonu bir değişkene atanır, kaldı
  2. Kapatma ayrı bir ad, normalde değişkenler bu ad dışında tanımlanmış erişebilirsiniz. Bu geliyorkullanınanahtar kelime:
  3. kullanın(kullanmak) başarılı erişim sağlar kapatılması iç değişkenler.
  4. kullanınerken bağlama. Bu değişken değerleri kapatılması TANIMLAMA üzerine KOPYALANIR anlamına gelir. Yani kapatma içinde $tax değiştirme bir nesne gibi bir işaretçi olduğu sürece hiçbir dış etkiye sahiptir.
  5. &$total halinde gibi işaretçi değişkenler iletebilirsiniz. Bu şekilde, $total değerini değiştirerek bir dış etki, orijinal değişkenin değerini değiştirir.
  6. Değişkenler kapatılması içinde tanımlanan kapatılması dışarıdan erişilebilir değildir.
  7. Kilitler ve işlevleri aynı hız var. Evet, bu komut dosyalarının hepsini kullanabilirsiniz.

@pointed out muhtemelen en iyi Mytskine detaylı açıklama RFC for closures. (Bunun için onu Upvote.)

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • ABC News (Australia)

    ABC News (Au

    9 HAZİRAN 2008
  • HowToBasic

    HowToBasic

    8 Aralık 2011
  • MndsgnVEVO

    MndsgnVEVO

    26 Kasım 2013