Anak panah dalam php ialah fungsi anak panah, iaitu fungsi pendek yang ditulis dalam php Fungsi ini sangat berguna apabila menghantar penutupan kepada fungsi tersebut adalah seperti "$posts = [/* . .. */];$ids = array_map(fn($post) => $post->id, $posts);”.
Persekitaran pengendalian tutorial ini: sistem Windows 7, PHP versi 8.1, komputer Dell G3.
Apakah maksud anak panah dalam php?
Penjelasan terperinci tentang contoh fungsi anak panah PHP 7.4 sintaks baharu
Penutupan pendek, juga dipanggil fungsi anak panah, ialah fungsi pendek yang ditulis dalam PHP apabila menghantar penutupan kepada fungsi Ini ciri ini sangat berguna apabila menggunakan fungsi array_map atau array_filter.
Beginilah rupanya:
// 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
Contoh di atas boleh ditulis sebagai had jenis yang lebih ketat:
$ids = array_map(fn(Post $post): int => $post->id, $posts);
Terdapat dua perkara yang perlu disebutkan:
Jika anda ingin mengembalikan hasil melalui rujukan, anda harus menggunakan sintaks berikut:
fn&($x) => $x
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 tidak boleh ada lebih daripada satu baris dalam badan penutup.
Alasannya adalah seperti berikut: tujuan penutupan singkat adalah untuk mengurangkan lebihan. Sudah tentu, fn lebih pendek daripada fungsi dalam apa jua keadaan. Walau bagaimanapun, pencipta RFC Nikita Popov percaya bahawa jika anda berurusan dengan fungsi yang merupakan ungkapan berbilang baris, anda mendapat lebih sedikit manfaat daripada menggunakan penutupan.
Lagipun, takrifan penutupan berbilang baris sudah sangat berlebihan, jadi mempunyai dan tidak mempunyai dua kata kunci ini ( fungsi dan pulangan ) tidak akan membawa banyak perbezaan.
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 mungkin akan ditambah pada masa hadapan, tetapi itu akan menjadi RFC yang berasingan.
Nilai skop luar
Satu lagi ciri ketara penutupan pendek dan penutupan biasa ialah penutupan pendek tidak perlu menggunakan Kata Kunci boleh mengakses data dalam skop luaran.
$modifier = 5; array_map(fn($x) => $x * $modifier, $numbers);
Perlu diambil perhatian bahawa pembolehubah dalam skop luar tidak boleh diubah suai. Kerana ia lulus dengan nilai dan bukannya lulus dengan rujukan. Ini bermakna anda boleh menukar $modifier
pembolehubah di dalam penutupan pendek, tetapi ia tidak akan memberi kesan pada pembolehubah $modifier
dalam skop luar.
Sudah tentu, terdapat pengecualian, dan itu ialah kata kunci $this, 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 pembangunan pada masa hadapan Idea lain dalam fikiran saya ialah membenarkan penggunaan dalam kelas Penutupan pendek, seperti fungsi pengambil dan penetap Pembelajaran yang disyorkan: "
Tutorial Video PHPclass Post { private $title; fn getTitle() => $this->title; }
Atas ialah kandungan terperinci Apakah maksud anak panah dalam php. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!