PHP – Closure::call()

Carissa

Administrator
Katılım
2 Mar 2015
Konular
59,189
Mesajlar
88,442
Çözüm
109
Online süresi
4mo 16d
Reaksiyon Skoru
14,280
Altın Konu
2,398
TM Yaşı
11 Yıl 3 Ay 8 Gün
Başarım Puanı
1,051
MmoLira
695,207
DevLira
234
Ticaret - 0%
0   0   0

ROHAN2 WORLD 1-120 TR TİPİ OFFICIAL YOHARA, BALATHOR VE AMON! 80. GÜNÜNDE! +10.000 ONLİNE! HİLE VE BOT %100 ENGELLİ HEMEN TIKLA!



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:


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)