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

  • CZTUTORIALS

    CZTUTORIALS

    28 Ocak 2011
  • HTC

    HTC

    12 Ocak 2006
  • KRQE

    KRQE

    6 AĞUSTOS 2007