Closure::bindTo

(PHP 5 >= 5.4.0, PHP 7)

Closure::bindTo Yeni bir bağlı nesne ve sınıf bağlamıyla bir closure nesnesini kopyalar

Açıklama

public Closure::bindTo ( object $yeninesne [, mixed $yenibağlam = "static" ] ) : Closure

Yeni bir anonim işlevi mevcutla aynı gövde ve bağlı değişkenlerde, farklı bir "bağlı nesne" ve yeni bir "sınıf bağlamı"yla oluşturup döndürür.

"Bağlı nesne", işlev gövdesinde bulunacak $this değerini, "sınıf bağlamı" ise, anonim işlevin erişebileceği private ve protected üyeleri belirleyen bir sınıfı temsil eder. Yani, görünür olacak üyeler, anonim işlevin yenibağlam değiştirgesinde değer olarak belirtilen sınıfın yöntemleri olan anonim işlevlerle aynıdır.

Duruk closure'lar herhangi bir bağlı nesneye sahip olamadıkları gibi (yeninesne değeri NULL olmalıdır) bu işlev de onların sınıf bağlamını değiştirmekte kullanılamaz.

Bu işlev, duruk-olmayan bir closure için, sahip olunan bağlı bir örneğin bağlamda olup olmadığını görmek içindir.

Bilginize:

Anonim işlevleri sadece yinelemek istiyorsanız basitçe kopyalama yapabilirsiniz.

Değiştirgeler

yeninesne

Anonim işleve bağlaması için verilen nesne ya da bağın kaldırılması için NULL.

yenibağlam

İlişkili closure'un ilişkilendirileceği sınıf bağlamı ya da ilişkili olanı tutmak için 'static'. Bir nesne belirtilirse bu nesnenin sınıfı geçerli olur. Bu, bağlı nesnenin protected ve private yöntemlerinin görünürlüğünü saptamaya yarar. Bu değiştirgede dahili bir sınıfı (nesnesini) aktarmaya izin verilmez.

Dönen Değerler

Yeni oluşturulan Closure nesnesiyle döner başarısızlık durumunda FALSE döner

Sürüm Bilgisi

Sürüm: Açıklama
7.0.0 yenibağlam ile artık dahili bir sınıf (nesne) belirtilemiyor, evvelce yapılabiliyordu.

Örnekler

Örnek 1 - Closure::bindTo() örneği

<?php

class {
    function 
__construct($val) {
        
$this->val $val;
    }
    function 
getClosure() {
        
//bu nesne ve bağlama bağlı closure ile döner
        
return function() { return $this->val; };
    }
}

$ob1 = new A(1);
$ob2 = new A(2);

$cl $ob1->getClosure();
echo 
$cl(), "\n";
$cl $cl->bindTo($ob2);
echo 
$cl(), "\n";
?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

1
2

Ayrıca Bakınız