Meskipun saya secara umum setuju bahwa itu kemungkinan adalah bug dalam kode baru, saya lebih suka mencela daripada memperingatkan atau bahkan kesalahan. perubahan akan membuat tidak mungkin untuk mempertahankan tipe tanpa peringatan sambil mempertahankan kompatibilitas dengan versi PHP lama dan membuat migrasi tambahan lebih sulit (maka tidak mungkin untuk menulis kode bebas peringatan yang berjalan pada 7. 0 dan 8. 0 pada saat yang sama sambil mempertahankan informasi jenis) Show
Informasi dapat diteruskan ke fungsi melalui daftar argumen, yang merupakan daftar ekspresi yang dibatasi koma. Argumen dievaluasi dari kiri ke kanan, sebelum fungsi benar-benar dipanggil (evaluasi bersemangat) PHP mendukung lewat argumen dengan nilai (default), , dan. dan juga didukung Contoh #1 Melewati array ke fungsi
Mulai dari PHP 8. 0. 0, daftar argumen fungsi dapat menyertakan tanda koma, yang akan diabaikan. Itu sangat berguna dalam kasus di mana daftar argumen panjang atau berisi nama variabel yang panjang, membuatnya mudah untuk membuat daftar argumen secara vertikal Contoh #2 Daftar Argumen Fungsi dengan koma di belakang
Melewati argumen dengan referensiSecara default, argumen fungsi diteruskan dengan nilai (sehingga jika nilai argumen di dalam fungsi diubah, nilai itu tidak berubah di luar fungsi). Untuk mengizinkan fungsi memodifikasi argumennya, mereka harus diteruskan dengan referensi Agar argumen ke suatu fungsi selalu diteruskan dengan referensi, tambahkan ampersand (&) ke nama argumen dalam definisi fungsi Contoh #3 Melewati parameter fungsi dengan referensi
Merupakan kesalahan untuk memberikan nilai sebagai argumen yang seharusnya diteruskan dengan referensi Nilai argumen defaultSuatu fungsi dapat menentukan nilai default untuk argumen menggunakan sintaks yang mirip dengan menugaskan variabel. Standarnya hanya digunakan bila parameter tidak ditentukan; Contoh #4 Penggunaan parameter default dalam fungsi
Contoh di atas akan ditampilkan Making a cup of cappuccino. Making a cup of . Making a cup of espresso. Nilai parameter default dapat berupa nilai skalar, array, tipe khusus Contoh #5 Menggunakan tipe non-skalar sebagai nilai default Fatal error: Uncaught ArgumentCountError: Too few arguments to function makeyogurt(), 1 passed in example.php on line 42_1 Contoh #6 Menggunakan objek sebagai nilai default (mulai dari PHP 8. 1. 0) Fatal error: Uncaught ArgumentCountError: Too few arguments to function makeyogurt(), 1 passed in example.php on line 42_2 Nilai default harus berupa ekspresi konstanta, bukan (misalnya) variabel, anggota kelas, atau pemanggilan fungsi Perhatikan bahwa argumen opsional apa pun harus ditentukan setelah argumen apa pun yang diperlukan, jika tidak, argumen tersebut tidak dapat dihilangkan dari panggilan. Perhatikan contoh berikut Contoh #7 Penggunaan argumen fungsi default yang salah Fatal error: Uncaught ArgumentCountError: Too few arguments to function makeyogurt(), 1 passed in example.php on line 42_3 Fatal error: Uncaught ArgumentCountError: Too few arguments to function makeyogurt(), 1 passed in example.php on line 42_4 Contoh di atas akan ditampilkan Fatal error: Uncaught ArgumentCountError: Too few arguments to function makeyogurt(), 1 passed in example.php on line 42_ Sekarang, bandingkan di atas dengan ini Contoh #8 Penggunaan argumen fungsi default yang benar Fatal error: Uncaught ArgumentCountError: Too few arguments to function makeyogurt(), 1 passed in example.php on line 42_5 Fatal error: Uncaught ArgumentCountError: Too few arguments to function makeyogurt(), 1 passed in example.php on line 42_6 Contoh di atas akan ditampilkan Making a bowl of raspberry yogurt._ Mulai dari PHP 8. 0. 0, dapat digunakan untuk melewatkan beberapa parameter opsional Contoh #9 Penggunaan argumen fungsi default yang benar Fatal error: Uncaught ArgumentCountError: Too few arguments to function makeyogurt(), 1 passed in example.php on line 42_7 Fatal error: Uncaught ArgumentCountError: Too few arguments to function makeyogurt(), 1 passed in example.php on line 42_8 Contoh di atas akan ditampilkan Making a bowl of raspberry natural yogurt. Mulai dari PHP 8. 0. 0, mendeklarasikan argumen wajib setelah argumen opsional tidak digunakan lagi. Ini umumnya dapat diatasi dengan membuang nilai default, karena tidak akan pernah digunakan. Satu pengecualian untuk aturan ini adalah argumen dalam bentuk Fatal error: Uncaught ArgumentCountError: Too few arguments to function makeyogurt(), 1 passed in example.php on line 429, di mana null default membuat tipe tersebut secara implisit dapat dibatalkan. Penggunaan ini tetap diperbolehkan, meskipun disarankan untuk menggunakan yang eksplisitContoh #10 Mendeklarasikan argumen opsional setelah argumen wajib Making a bowl of raspberry yogurt._1 Making a bowl of raspberry yogurt._2
Daftar argumen dengan panjang variabelPHP memiliki dukungan untuk daftar argumen panjang variabel dalam fungsi yang ditentukan pengguna dengan menggunakan token Making a bowl of raspberry yogurt.3
Daftar argumen dapat menyertakan token Making a bowl of raspberry yogurt._3 untuk menunjukkan bahwa fungsi menerima sejumlah variabel argumen. Argumen akan diteruskan ke variabel yang diberikan sebagai array Contoh #11 Menggunakan Making a bowl of raspberry yogurt._3 untuk mengakses argumen variabel Making a bowl of raspberry yogurt._7 Making a bowl of raspberry yogurt._8 Contoh di atas akan ditampilkan Making a bowl of raspberry yogurt.3 juga dapat digunakan saat memanggil fungsi untuk membongkar array atau variabel Traversable atau literal ke dalam daftar argumen Contoh #12 Menggunakan Making a bowl of raspberry yogurt._3 untuk memberikan argumen Making a bowl of raspberry natural yogurt._1 Making a bowl of raspberry natural yogurt._2 Making a bowl of raspberry natural yogurt._3 Contoh di atas akan ditampilkan Anda dapat menentukan argumen posisi normal sebelum Making a bowl of raspberry yogurt.3 token. Dalam hal ini, hanya argumen tambahan yang tidak cocok dengan argumen posisi yang akan ditambahkan ke larik yang dihasilkan oleh Making a bowl of raspberry yogurt.3 Dimungkinkan juga untuk menambahkan deklarasi tipe sebelum token Making a bowl of raspberry yogurt.3. Jika ini ada, maka semua argumen yang ditangkap oleh Making a bowl of raspberry yogurt.3 harus cocok dengan tipe parameter tersebut Contoh #13 Ketik argumen variabel yang dideklarasikan Making a bowl of raspberry natural yogurt._8 Making a bowl of raspberry natural yogurt._9 3 days Catchable fatal error: Argument 2 passed to total_intervals() must be an instance of DateInterval, null given, called in - on line 14 and defined in - on line 2_0 Contoh di atas akan ditampilkan 3 days Catchable fatal error: Argument 2 passed to total_intervals() must be an instance of DateInterval, null given, called in - on line 14 and defined in - on line 2 Terakhir, argumen variabel juga dapat diteruskan dengan mengawali Making a bowl of raspberry yogurt.3 dengan ampersand ( 3 days Catchable fatal error: Argument 2 passed to total_intervals() must be an instance of DateInterval, null given, called in - on line 14 and defined in - on line 22) PHP versi lamaTidak diperlukan sintaks khusus untuk mencatat bahwa suatu fungsi adalah variadik; Contoh pertama di atas akan diimplementasikan sebagai berikut di versi lama PHP Contoh #14 Mengakses argumen variabel di versi PHP lama 3 days Catchable fatal error: Argument 2 passed to total_intervals() must be an instance of DateInterval, null given, called in - on line 14 and defined in - on line 2_3 Making a bowl of raspberry yogurt._8 Contoh di atas akan ditampilkan Argumen bernamaPHP 8. 0. 0 memperkenalkan argumen bernama sebagai perpanjangan dari parameter posisi yang ada. Argumen bernama memungkinkan meneruskan argumen ke fungsi berdasarkan nama parameter, bukan posisi parameter. Ini membuat arti dari argumen mendokumentasikan diri sendiri, membuat argumen tidak bergantung pada urutan dan memungkinkan melewatkan nilai default secara sewenang-wenang Argumen bernama dilewatkan dengan mengawali nilai dengan nama parameter diikuti dengan titik dua. Menggunakan kata kunci yang dicadangkan sebagai nama parameter diperbolehkan. Nama parameter harus berupa pengenal, menentukan secara dinamis tidak diperbolehkan Contoh #15 Sintaks argumen bernama 3 days Catchable fatal error: Argument 2 passed to total_intervals() must be an instance of DateInterval, null given, called in - on line 14 and defined in - on line 2_5 3 days Catchable fatal error: Argument 2 passed to total_intervals() must be an instance of DateInterval, null given, called in - on line 14 and defined in - on line 2_6 Contoh #16 Argumen posisi versus argumen bernama 3 days Catchable fatal error: Argument 2 passed to total_intervals() must be an instance of DateInterval, null given, called in - on line 14 and defined in - on line 2_7 3 days Catchable fatal error: Argument 2 passed to total_intervals() must be an instance of DateInterval, null given, called in - on line 14 and defined in - on line 2_8 Urutan penyampaian argumen bernama tidak menjadi masalah Contoh #17 Contoh yang sama seperti di atas dengan urutan parameter yang berbeda 3 days Catchable fatal error: Argument 2 passed to total_intervals() must be an instance of DateInterval, null given, called in - on line 14 and defined in - on line 2_9 Argumen bernama dapat digabungkan dengan argumen posisional. Dalam hal ini, argumen bernama harus muncul setelah argumen posisional. Dimungkinkan juga untuk menentukan hanya beberapa argumen opsional dari suatu fungsi, terlepas dari urutannya Contoh #18 Menggabungkan argumen bernama dengan argumen posisi
Meneruskan parameter yang sama beberapa kali akan menghasilkan pengecualian Error Contoh #19 Error dilontarkan saat melewati parameter yang sama beberapa kali
Mulai dari PHP 8. 1. 0, dimungkinkan untuk menggunakan argumen bernama setelah membongkar argumen. Argumen bernama tidak boleh mengesampingkan argumen yang sudah dibongkar Apakah parameter opsional merupakan praktik yang buruk?Hal dengan parameter opsional adalah, mereka BURUK karena tidak intuitif - artinya mereka TIDAK berperilaku seperti yang Anda harapkan. Inilah alasannya. Mereka merusak kompatibilitas ABI. sehingga Anda dapat mengubah argumen default di satu tempat.
Apakah wajib menentukan nilai default ke parameter opsional?Parameter opsional harus memberikan nilai default yang dapat digunakan jika tidak ada parameter yang disediakan oleh prosedur pemanggilan .
Bagaimana cara membuat parameter opsional di PHP?Argumen yang tidak menghentikan fungsi bekerja meskipun tidak ada yang diteruskan disebut sebagai argumen opsional . Argumen yang kehadirannya sepenuhnya opsional, nilainya akan diambil oleh program jika disediakan.
Mengapa parameter opsional ditambahkan?Tetapi menggunakan Parameter Opsional, Anda dapat menentukan nilai default . Jadi, setiap kali tidak ada nilai atau undefined yang diteruskan, nilai default akan diteruskan sebagai gantinya. |