函數參數可設定預設值,呼叫時省略該參數即自動使用預設值,提升 API 彈性。
function 函數名(參數名 = 預設值, ...) { ... }
<?php
function printMe($param = null) {
print $param;
}
printMe("This is test"); // 輸出: This is test
printMe(); // 輸出: (空白,null 不顯示)
?>
<?php
function textOnWeb($content, $fontSize = 3) {
echo "<font size=\"$fontSize\">$content</font>";
}
textOnWeb("A<br />", 7); // size=7
textOnWeb("AA.<br />"); // size=3 (預設)
textOnWeb("AAA.<br />"); // size=3
textOnWeb("AAAA!<br />"); // size=3
?>
輸出結果:第一行字大,其餘預設大小。
| 特性 | 版本 | 範例 |
|---|---|---|
| 型別宣告 + 預設值 | 7.0+ | function foo(int $x = 0): void |
| 可變參數 ... | 5.6+ | function sum(...$nums) { return array_sum($nums); } |
| 命名參數 | 8.0+ | foo(x: 1, z: 3) 跳過 y |
| null 合併賦值 ??= | 7.4+ | $x ??= default() 惰性預設 |
<?php
// ❌ 錯誤:預設值非常數
function bad($x = time()) {}
// ❌ 錯誤:有預設值在前
function bad($x = 1, $y) {}
// ✅ 正確
function good($y, $x = 1) {}
?>