Closure::bindTo

(PHP 5 >= 5.4.0, PHP 7, PHP 8)

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

Açıklama

public Closure::bindTo ( object $newthis , mixed $newscope = "static" ) : Closure|null

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 newscope değiştirgesinde değer olarak belirtilen sınıfın yöntemleri olan anonim işlevlerle aynıdır.

Statik closure'lar herhangi bir bağlı nesneye sahip olamadıkları gibi (newthis 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, statik-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

newthis

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

newscope

İ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ız olursa null döner.

Ö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