Mengatasi Argumen Fungsi Lalai dalam PHP
Fungsi PHP menyokong penggunaan argumen lalai untuk menetapkan nilai sandaran apabila menggunakan fungsi tersebut. Walau bagaimanapun, menetapkan hujah tertentu sambil mengekalkan lalai untuk hujah sebelumnya boleh mencabar.
Pertimbangkan fungsi berikut:
<code class="php">function foo($blah, $x = "some value", $y = "some other value") { }</code>
Argumen lalai untuk $x dan $y ialah "beberapa nilai" dan "beberapa nilai lain," masing-masing. Tetapi bagaimana jika anda ingin mengatasi nilai lalai untuk $y semasa menggunakan lalai untuk $x?
Percubaan untuk mengatasi lalai menggunakan null, seperti:
<code class="php">foo("blah", null, "test"); // Does not work</code>
atau
<code class="php">foo("blah", "", "test"); // Does not work</code>
tidak akan menghasilkan hasil yang diingini.
Pendekatan lain, memberikan pembolehubah lalai kepada nama pembolehubah, seperti:
<code class="php">foo("blah", $x, $y = "test");</code>
juga gagal mengatasi lalai.
Untuk mengatasi cabaran ini, ubah suai pengisytiharan fungsi seperti berikut:
<code class="php">function foo($blah, $x = null, $y = null) { if (null === $x) { $x = "some value"; } if (null === $y) { $y = "some other value"; } }</code>
Ini membolehkan anda membuat panggilan seperti:
<code class="php">foo('blah', null, 'non-default y value');</code>
dan masih mengekalkan nilai lalai untuk $x.
Nota: Argumen lalai sahaja berfungsi sebagai hujah terakhir kepada fungsi tersebut. Mengeluarkan parameter dan mengatasi parameter berikut tidak mungkin apabila mengisytiharkan nilai lalai dalam definisi fungsi.
Atas ialah kandungan terperinci Bagaimana untuk Mengatasi Argumen Fungsi Lalai dalam PHP Semasa Mengekalkan Yang Lain?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!