Penutupan, juga dikenali sebagai fungsi tanpa nama, dalam PHP adalah fungsi yang boleh ditakrifkan dalam talian dalam ungkapan yang lebih besar. Mereka amat berguna untuk mewujudkan fungsi panggil balik atau untuk melewati fungsi sebagai argumen kepada fungsi lain. Berikut adalah contoh bagaimana anda boleh menggunakan penutupan dalam PHP:
<code class="php">$greet = function($name) { return "Hello, " . $name; }; echo $greet("John"); // Outputs: Hello, John</code>
Dalam contoh ini, $greet
adalah penutupan yang mengambil parameter $name
dan mengembalikan rentetan ucapan. Penutupan juga boleh menangkap pembolehubah dari skop sekitar mereka, menjadikannya lebih kuat. Berikut adalah contoh penutupan yang menggunakan pembolehubah dari skop luar:
<code class="php">$message = "Hello"; $greet = function($name) use ($message) { return $message . ", " . $name; }; echo $greet("John"); // Outputs: Hello, John</code>
Dalam kes ini, penutupan menggunakan kata kunci use
untuk mengimport pemboleh ubah $message
dari skop induk ke skopnya sendiri.
Penutupan PHP menawarkan beberapa faedah untuk organisasi dan reka bentuk kod:
create_function()
dalam versi lama PHP, kerana penutupan dilaksanakan dengan lebih cekap.Inilah contoh yang menunjukkan penggunaan penutupan untuk kod yang lebih teratur:
<code class="php">$numbers = [1, 2, 3, 4, 5]; // Using a closure to filter even numbers $evenNumbers = array_filter($numbers, function($num) { return $num % 2 == 0; }); print_r($evenNumbers); // Outputs: Array ( [1] => 2 [3] => 4 )</code>
Lulus pembolehubah dengan merujuk kepada penutupan PHP boleh dilakukan menggunakan kata kunci use
bersama dengan pengendali &
(rujukan). Ini membolehkan penutupan mengubah suai pembolehubah dari skop luar. Inilah contoh:
<code class="php">$counter = 0; $increment = function() use (&$counter) { $counter ; }; $increment(); $increment(); echo $counter; // Outputs: 2</code>
Dalam contoh ini, $counter
diimport ke dalam penutupan dengan rujukan menggunakan use (&$counter)
. Sebarang perubahan yang dibuat kepada $counter
di dalam penutupan akan secara langsung menjejaskan pembolehubah dalam skop luar.
Mengikat skop penutupan ke objek dalam PHP boleh dilakukan dengan menggunakan kaedah bindTo()
, yang boleh didapati pada objek penutupan. Kaedah ini membolehkan anda menetapkan objek yang mana penutupan akan terikat, dengan itu membolehkan penutupan untuk mengakses sifat dan kaedah objek.
Inilah contoh bagaimana untuk mengikat penutupan objek:
<code class="php">class MyClass { private $value = 42; public function getValue() { return $this->value; } } $obj = new MyClass(); $getBoundValue = function() { return $this->getValue(); }; $boundClosure = $getBoundValue->bindTo($obj, 'MyClass'); echo $boundClosure(); // Outputs: 42</code>
Dalam contoh ini, penutupan $getBoundValue
terikat kepada contoh $obj
MyClass
. Kaedah bindTo()
mengambil dua argumen: objek untuk mengikat, dan nama kelas objek. Selepas mengikat, penutupan boleh mengakses kaedah dan sifat objek seolah -olah ia adalah kaedah objek itu.
Teknik ini berguna untuk mewujudkan penutupan yang berkelakuan seperti kaedah objek tertentu, meningkatkan fleksibiliti dan dinamisme kod PHP anda.
Atas ialah kandungan terperinci Bagaimana anda menggunakan penutupan (fungsi tanpa nama) dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!