PHP定义函数必须使用function关键字,因其是解析器识别函数声明的唯一语法标识,缺省或误写均导致解析错误,且匿名函数同样需以function开头。

PHP 中定义函数必须用 function 关键字,缺它直接报解析错误,不是可选项,是语法铁律。
为什么非得写 function?
PHP 解析器只靠这个关键字识别「这是个函数声明」。写成 func、Func、FUNCTION 或漏掉,都会触发 Parse error: syntax error, unexpected ...。它不区分大小写,但统一小写是硬性惯例——某些 SAPI 或配置下大小写混用真会出问题。
- 常见错误现象:
myFunc() { echo "hi"; }—— 缺function,直接挂掉 - 函数名以数字开头(如
2ndTry())也会被拒绝,但那是命名规则问题,不是关键字问题 - 类方法也得用
function,只是位置在class内部,和全局函数语法一致
function 后面的函数名怎么起?
函数名必须以字母或下划线开头,后面可跟字母、数字、下划线;不能和内置函数同名(比如 function strlen() {...}),否则可能静默覆盖原行为,后续调用 strlen() 返回意外结果。
- 推荐用小写字母+下划线风格,比如
get_user_role(),清晰且兼容历史 PHP 版本 - 函数名本身不区分大小写,但别依赖这点——
GET_USER_ROLE()能调,但可读性和协作成本高 - 避免用保留字,比如
function echo() {...}会报错,echo是语言结构,不是普通函数
参数和 return 怎么配合 function 用?
参数列表写在括号里,多个用逗号分隔;return 不是必需的,但没它就拿不到计算结果——函数体执行完自动返回 null。
立即学习“PHP免费学习笔记(深入)”;
- 带默认值的参数必须放最后:
function greet($name, $prefix = "Hi")✅;function greet($prefix = "Hi", $name)❌ 报语法错误 -
greet("Alice", null)不会 fallback 到默认值,$prefix就是null,不是"Hi" -
return后面的表达式立即求值,之后代码不执行;多个return合法,但只走第一个遇到的
匿名函数也得用 function 关键字
匿名函数不是例外,它依然要 function 开头,只是不写函数名,而是赋值给变量或传给其他函数:
$add = function($a, $b) {
return $a + $b;
};
echo $add(2, 3); // 输出 5
初学者容易把 $add = function() {} 和 function add() {} 混为一谈——前者是变量赋值,后者是函数声明,作用域、生命周期、调用方式都不同。别省略 function,也别给匿名函数硬加名字。
最常被忽略的一点:function 是唯一入口,没有替代写法;所有自定义逻辑封装,都从它开始,也止于它被正确书写。



















