PHP 默认参数怎么用
写代码时,你有没有遇到过这种情况:有些函数需要好几个参数,比如“给用户发通知”的函数,要填收件人、内容、发送方式,可大部分时候用户都用默认的短信发送,每次都重复填“短信”就特别麻烦?其实PHP早就给我们准备了“偷懒神器”——默认参数,今天就用生活化的例子,把这个好用的功能讲明白。
什么是PHP的默认参数?
简单说,默认参数就是给函数的某个参数提前设好一个“备选值”,要是调用函数的时候没填这个参数,PHP就自动用提前设好的值;要是填了新值,就用你给的新值。举个大家常点的奶茶例子:

你要一杯奶茶,店员问“要糖吗?”,大部分人都要半糖,那“半糖”就是糖度的默认参数。要是你想做三分糖,就跟店员说“三分糖”,这就是给参数传了新值,覆盖了默认值。
对应的PHP代码逻辑就像这样:先给函数的参数设好默认值,调用时按需传值就行,不用每次都写重复的内容。
怎么用默认参数?记住两个关键规则
很多新手刚用默认参数时容易踩坑,只要记住这两个小规则,就能少出错。
第一个规则:默认参数要放在参数列表的最后。
比如,你不能把要传新值的参数(非默认)放后面。举个反例:假设要写一个“点奶茶”的函数,顺序写成function buyTea($sugar="半糖", $size)——这就不对,因为PHP分不清你传一个值的时候是给糖度还是杯型。
正确顺序应该是把有默认值的放后面:function buyTea($size, $sugar="半糖")。这样你调用时只传buyTea("中杯"),PHP自动把“中杯”给$size,$sugar用默认的半糖;要是想改,就传buyTea("大杯", "三分糖"),替换默认值。
第二个规则:默认值只能是固定值,不能是动态结果。
比如,你想把当前时间设为默认值,写成function getTime($now=time())是不行的,因为time()是每次运行都变的动态值,PHP不支持。但像字符串、数字、数组这种固定值都可以,比如function sendMsg($user, $method="短信")就没问题,"短信"是固定值,每次调用都能用。
用默认参数解决什么实际问题?
默认参数最实用的地方,就是减少重复代码,让函数更灵活。比如做一个给用户发通知的功能,原来的函数可能要写3个参数:
`php
// 没默认参数,每次调用都要写3个值
function sendNotification($userId, $content, $channel){
// 发通知的逻辑
}
sendNotification(101, "你的快递到了", "短信");
sendNotification(102, "你的快递到了", "短信");
sendNotification(103, "你的快递到了", "短信");
`
要是大部分都用短信,每次都写"短信"就太啰嗦了,改成默认参数后:
`php
// 给channel设默认值"短信"
function sendNotification($userId, $content, $channel="短信"){
// 发通知的逻辑
}
// 只需要传必填的2个参数,省事儿
sendNotification(101, "你的快递到了"); // 自动用"短信"
sendNotification(102, "你的快递到了"); // 还是用默认
// 特殊情况才传新值
sendNotification(103, "你的快递到了", "微信");
`
这样代码更简洁,改需求也方便,要是以后想把默认通道改成“APP推送”,只需要改函数里的默认值,不用改所有调用的地方。
最后再提醒一句:默认参数不是越多越好,只给经常用、变化少的参数设默认,要是参数变化多,还是老老实实传值更清晰。