Apa Arti Tiga Titik (...) di PHP?
Saat saya menginstal Magento 2 di Sever saya, saya mendapat kesalahan. Selidiki kode tersebut dan temukan bahwa ada Tiga titik (...), yang menghasilkan kesalahan. Saya menyebutkan kode di bawah ini
return new $type(...array_values($args));
Jawaban:
Ini
...$str
disebut operator percikan di PHP .Fitur ini memungkinkan Anda untuk menangkap sejumlah variabel argumen ke suatu fungsi, dikombinasikan dengan argumen "normal" yang diteruskan jika Anda mau. Paling mudah dilihat dengan contoh:
Daftar parameter dalam deklarasi fungsi memiliki
...
operator di dalamnya, dan pada dasarnya berarti "... dan yang lainnya harus menjadi $ string". Anda dapat mengirimkan 2 atau lebih argumen ke dalam fungsi ini dan yang kedua dan selanjutnya akan ditambahkan ke array $ strings, siap digunakan.Semoga ini membantu!
sumber
[
dan]
. Ini tidak terlalu bermanfaat tapi saya pikir itu terlihat bagus.function myFunc($foo, string ...$bar)
. Kemudian$bar
berikan fungsi Anda sebuah array string dan tidak ada yang lain, dijamin saat run-time. Anda tidak dapat melakukannya dengan satu parameter array.function get_data($fname,$lname,$age)
harus berubah jika Anda ingin bidang selain ketigafunction get_data(...$fields)
tidak harus berubah, Anda hanya perlu menentukan bidang yang Anda inginkan$fields
. @heykatiebenSetiap jawaban mengacu pada posting blog yang sama, selain itu, berikut adalah dokumentasi resmi tentang daftar argumen panjang-variabel :
http://php.net/manual/en/functions.arguments.php#functions.variable-arg-list
Sepertinya operator "percikan" bukanlah nama resmi, tetap saja lucu!
sumber
Ada DUA kegunaan untuk elipsis (...) token PHP — anggap saja mereka sebagai pengepakan sebuah array dan membongkar sebuah array. Kedua tujuan tersebut berlaku untuk argumen fungsi.
Pak
Saat mendefinisikan sebuah fungsi, jika Anda memerlukan sejumlah variabel dinamis yang disediakan untuk fungsi tersebut (yaitu, Anda tidak tahu berapa banyak argumen yang akan diberikan ke fungsi itu ketika dipanggil dalam kode) gunakan token elipsis (...) untuk menangkap semua argumen tersisa yang disediakan untuk fungsi itu ke dalam larik yang dapat diakses di dalam blok fungsi. Jumlah argumen dinamis yang ditangkap oleh elipsis (...) bisa nol atau lebih.
Contoh :
Ketika pengepakan digunakan dalam fungsi instantiation, elipsis (...) menangkap semua argumen yang tersisa , yaitu, Anda masih dapat memiliki sejumlah argumen awal, tetap (posisi):
Membongkar
Alternatifnya, saat memanggil fungsi, jika argumen yang Anda berikan ke fungsi itu sebelumnya digabungkan ke dalam array, gunakan token elipsis (...) untuk mengonversi array itu menjadi argumen individual yang disediakan untuk fungsi — setiap elemen array ditetapkan ke masing-masing variabel argumen fungsi dinamai dalam definisi fungsi.
Sebagai contoh:
Pembongkaran sangat berguna saat menggunakan fungsi array untuk memanipulasi array atau variabel.
Misalnya, membongkar hasil dari array_slice :
sumber
Untuk menggunakan fitur ini, cukup peringatkan PHP bahwa ia perlu mengekstrak array menjadi variabel menggunakan
... operator
. Lihat di sini untuk lebih jelasnya, contoh sederhana bisa terlihat seperti ini:sumber
Artinya adalah ia mendekomposisi array asosiatif menjadi daftar. Jadi, Anda tidak perlu mengetikkan parameter N untuk memanggil metode, cukup satu. Metode If memungkinkan parameter terdekomposisi dan jika parameter memiliki tipe yang sama.
Bagi saya, hal terpenting tentang operator percikan adalah dapat membantu untuk mengetikkan parameter array:
ini menghemat beberapa upaya pada kontrol tipe, terutama saat bekerja dengan koleksi besar atau sangat berorientasi objek.
Penting untuk diperhatikan adalah bahwa
...$array
melakukan dekomposisi sebuah array terlepas dari tipe itemnya , jadi Anda juga bisa melakukannya dengan cara yang jelek:Tapi tolong jangan.
sumber
Inilah yang disebut operator "percikan". Pada dasarnya hal itu diterjemahkan menjadi "sejumlah argumen"; diperkenalkan dengan PHP 5.6
Lihat di sini untuk detail lebih lanjut.
sumber
Sepertinya tidak ada yang menyebutkannya, jadi di sini untuk tinggal [Ini juga akan membantu Google (& SE lainnya) memandu pengembang yang meminta Parameter Istirahat di PHP ]:
Seperti yang ditunjukkan di sini yang disebut Parameter Istirahat di JS & saya lebih suka penamaan yang bermakna ini daripada benda percikan itu!
Di PHP, Fungsionalitas yang disediakan oleh ... args disebut fungsi Variadic yang diperkenalkan pada PHP5.6. Fungsionalitas yang sama digunakan untuk diimplementasikan menggunakan
func_get_args()
.Untuk menggunakannya dengan benar, Anda harus menggunakan sintaks parameter istirahat, di mana pun itu membantu mengurangi kode boilerplate .
sumber
Di PHP 7.4 elipsis juga merupakan operator Spread :
Sumber: https://wiki.php.net/rfc/spread_operator_for_array
sumber
Saya ingin berbagi penggunaan operator ini dalam kerangka Magento, di mana ia memberi contoh objek dengan parameter yang dapat dikonfigurasi dinamis (pikirkan file konfigurasi XML).
Seperti yang dapat kita lihat
createObject
fungsi dari potongan kode berikut, ini mengambil array argumen yang disiapkan untuk pembuatan objek. Kemudian menggunakan...
operator (tiga titik) untuk meneruskan nilai array sebagai argumen nyata ke konstruktor kelas.sumber
itu adalah operator percikan atau pencar di PHP
referensi: operator percikan atau pencar di PHP
sumber
Versi 5.6 menambahkan operator percikan atau terkadang disebut pembongkaran argumen. Operator percikan adalah 3 titik sebelum parameter. Operator percikan memungkinkan pengguna untuk mengirimkan sejumlah parameter yang berubah-ubah. Parameter arbitrer kemudian diubah menjadi array oleh PHP.
Jadi apa perbedaan antara menggunakan operator percikan dan array atau array asosiatif. Anda dapat menentukan tipe data dari objek yang ditugaskan ke operator percikan dan jika mereka tidak cocok dengan php akan membuat kesalahan.
ref: Di sini
sumber