Bvural41 1
Bvural41
kralhakan2009 1
kralhakan2009
Vahsi Uzman 1
Vahsi Uzman
mavzermete 1
mavzermete
xranzei 1
xranzei
noisiv 1
noisiv
Manwe Work 1
Manwe Work
Hikaye Ekle

PHP – Closure::call()

HERAKLES Otomatik Avlı kalıcı sunucu. 19 Haziran'da açılıyor. Atius & Wizard güvencesiyle hemen kayıt ol, ön kayıt ödülleri aktif. HEMEN TIKLA!

52_20210622172421.png


PHP'de bir closure, oluşturulduğu kapsamdaki değişkenlere, kapsam kapatıldıktan sonra bile erişebilen anonim bir fonksiyondur. İçinde use anahtar kelimesini belirtmeniz gerekir.

Kapatmalar, fonksiyon kodunu ve oluşturuldukları kapsamı kapsülleyen nesnelerdir. PHP 7 ile, bir nesne kapsamını bir kapatmaya bağlamak ve onu çağırmak için yeni bir closure::call() yöntemi tanıtıldı.

Kapatma Sınıfındaki Yöntemler

Closure sınıfı call() yöntemi de dahil olmak üzere aşağıdaki yöntemlere sahiptir:

final class Closure {

/* Methods */
private __construct()
public static bind(Closure $closure, ?object $newThis, object|string|null $newScope = "static"): ?Closure
public bindTo(?object $newThis, object|string|null $newScope = "static"): ?Closure
public call(object $newThis, mixed ...$args): mixed
public static fromCallable(callable $callback): Closure

}

call () metodu Closure sınıfının statik bir metodudur. bind() veya bindTo() metotlarına kısayol olarak tanıtılmıştır.

bind() yöntemi, belirli bir bağlı nesne ve sınıf kapsamına sahip bir kapanışı çoğaltır; bindTo() yöntemi ise yeni bir bağlı nesne ve sınıf kapsamına sahip kapanışı çoğaltır.

call() yönteminin imzası şu şekildedir:

public Closure::call(object $newThis, mixed ...$args): mixed

call() metodu, kapanışı geçici olarak newThis'e bağlar ve verilen herhangi bir parametreyle çağırır.

PHP 7'den önceki sürümlerde bindTo() yöntemi aşağıdaki gibi kullanılabilir:

PHP:
<?php
   class A {
      private $x = 1;
   }

   // Define a closure Pre PHP 7 code
   $getValue = function() {
      return $this->x;
   };

   // Bind a clousure
   $value = $getValue->bindTo(new A, 'A');
   print($value());
?>

Program, bir kapanış nesnesi olan $getValue'yu A sınıfının nesnesine bağlar ve onun özel değişkeni $x'in değerini yazdırır – bu değer 1'dir.

PHP 7 ile bağlama, aşağıda gösterildiği gibi call() metodu ile gerçekleştirilir:

PHP:
<?php
   class A {
      private $x = 1;
   }

   // PHP 7+ code, Define
   $value = function() {
      return $this->x;
   };

   print($value->call(new A));
?>
 

Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)

Geri
Üst