Cannn6161 1
Cannn6161
B 1
berione65
sen272 1
sen272
Mt2Hizmet 1
Mt2Hizmet
C 1
chengdu
xranzei 1
xranzei
Hikaye Ekle
Reklam vermek için turkmmo@gmail.com

PHP – Closure::call()

Carissa

Administrator
Telefon Numarası Onaylanmış Üye TC Kimlik Numarası Doğrulanmış Üye Turkmmo Discord Nitro Booster
Admin
VIP Üye
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 9 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!

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