Rumah > Artikel > pembangunan bahagian belakang > apakah maksud anak panah php
Anak panah PHP ialah penutupan pendek, juga dipanggil fungsi anak panah Ia adalah fungsi pendek yang ditulis dalam PHP Fungsi ini sangat berguna apabila menghantar penutupan kepada fungsi. Penutupan pendek hanya boleh mempunyai satu ungkapan, yang bermaksud tidak boleh terdapat berbilang baris dalam badan penutupan Tujuan penutupan pendek adalah untuk mengurangkan lebihan.
Persekitaran pengendalian tutorial ini: sistem Windows 10, versi php8.1.3, komputer DELL G3.
Apakah maksud anak panah dalam php?
Penjelasan terperinci tentang contoh fungsi anak panah PHP 7.4 sintaks baharu
Penutupan singkat, juga dipanggil fungsi anak panah, ialah fungsi pendek yang ditulis dalam PHP Ciri ini sangat berguna apabila menghantar penutupan kepada fungsi, seperti menggunakan array_map atau fungsi array_filter.
Beginilah rupanya:
// Koleksi objek Post
$posts = [/* … */]; $ids = array_map(fn($post) => $post->id, $posts);
Sedangkan sebelum ini, anda perlu menulis seperti ini:
$ids = array_map(function ($post) { return $post->id; }, $posts);
Mari kita ringkaskan cara menggunakan fungsi penutupan pendek.
Tersedia dalam PHP 7.4
Ia hanya boleh mengandungi satu ungkapan bermula dengan kata kunci fn, iaitu kata kunci pulangan ungkapan pulangan boleh Menaip pembayang boleh dilakukan dengan mengabaikan parameter dan jenis pengembalian
Had jenis yang lebih ketat daripada contoh di atas boleh ditulis sebagai:
$ids = array_map(fn(Post $post): int => $post->id, $posts);
Terdapat dua perkara yang perlu dinyatakan:
Juga membenarkan penggunaan operator spread untuk membenarkan rujukan, dan kedua-dua parameter boleh digunakan sebagai nilai pulangan
Jika anda ingin mengembalikan hasil melalui rujukan, anda harus menggunakan yang berikut sintaks:
fn&($x) => $x
Mudah Secara ringkasnya, penutupan pendek berfungsi sama seperti penutupan biasa, kecuali hanya satu ungkapan dibenarkan.
Barisan tunggal
Anda harus memahaminya dengan betul: penutupan pendek hanya boleh mempunyai satu ungkapan. Ini bermakna bahawa tidak boleh terdapat berbilang baris dalam badan penutup.
Alasannya adalah seperti berikut: tujuan penutupan pendek adalah untuk mengurangkan lebihan. Sudah tentu, fn lebih pendek daripada fungsi dalam apa jua keadaan. Walau bagaimanapun, pencipta RFC Nikita Popov Saya fikir jika anda berurusan dengan fungsi yang merupakan ungkapan berbilang baris, anda mendapat lebih sedikit manfaat daripada menggunakan penutupan.
Lagipun, takrifan penutupan berbilang talian sudah sangat berlebihan, jadi tidak akan ada banyak perbezaan antara mempunyai dan tidak mempunyai dua kata kunci ini ( fungsi dan pulangan ).
Sama ada anda bersetuju dengan pandangan ini terpulang kepada anda. Walaupun saya boleh memikirkan banyak senario untuk penutupan satu baris dalam projek saya, terdapat juga banyak senario untuk penutupan berbilang baris, dan secara peribadi saya lebih suka sintaks yang lebih pendek untuk kes tersebut.
Walaupun ada harapan: penutupan pendek berbilang talian boleh ditambah pada masa hadapan, tetapi itu juga akan menjadi RFC yang berasingan.
Nilai dalam skop luar
Satu lagi ciri ketara penutupan pendek dan penutupan biasa ialah penutupan pendek boleh mengakses data dalam skop luar tanpa menggunakan kata kunci penggunaan.
$modifier = 5; array_map(fn($x) => $x * $modifier, $numbers);
Perlu diingatkan bahawa pembolehubah dalam skop luar tidak boleh diubah suai. Kerana ia lulus dengan nilai dan bukannya lulus dengan rujukan. Ini bermakna anda boleh menukar pembolehubah $modifier di dalam penutupan pendek, tetapi ia tidak akan mengubah pembolehubah dalam skop luar. Pembolehubah $modifier mempunyai kesan.
Sudah tentu, terdapat pengecualian, dan itu ialah kata kunci $ini, yang berfungsi sama seperti dalam penutupan biasa:
array_map(fn($x) => $x * $this->modifier, $numbers);
Prospek pembangunan
Penutupan berbilang talian yang telah saya nyatakan masih merupakan kemungkinan untuk masa hadapan idea adalah untuk membenarkan penggunaan penutupan pendek dalam kelas, seperti getter dan setter Fungsi.
class Post { private $title; fn getTitle() => $this->title; }
Secara keseluruhannya, penutupan pendek merupakan ciri yang sangat dialu-alukan, walaupun terdapat banyak bahagian untuk penambahbaikan.
Atas ialah kandungan terperinci apakah maksud anak panah php. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!