Apakah maksud anak panah dalam php

藏色散人
Lepaskan: 2023-03-17 11:06:01
asal
1314 orang telah melayarinya

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);”.

Apakah maksud anak panah dalam php

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);
Salin selepas log masuk

Sedangkan sebelum ini, anda perlu menulis seperti ini:

$ids = array_map(function ($post) {
  return $post->id;
}, $posts);
Salin selepas log masuk

Mari kita ringkaskan cara menggunakan fungsi penutupan pendek.

Tersedia dalam PHP 7.4

  • Bermula dengan kata kunci fn
  • hanya boleh mengandungi satu ungkapan, iaitu ungkapan pulangan
  • Kata kunci pulangan boleh diabaikan
  • Kedua-dua parameter dan jenis pulangan boleh jenis dibayangkan

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:

  • Penyebaran operator juga dibenarkan
  • Rujukan dibenarkan, dan kedua-dua parameter boleh digunakan sebagai nilai pulangan

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);
Salin selepas log masuk

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 PHP
class Post {
  private $title;

  fn getTitle() => $this->title;
}
Salin selepas log masuk
"

Atas ialah kandungan terperinci Apakah maksud anak panah dalam php. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan