You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP匿名函数不通过use关键字直接传参调用是否为合法语法?

语法合法性结论

你给出的示例1是完全符合PHP规范的合法语法,没有任何问题。

语法逻辑说明

这种写法属于立即执行函数表达式(IIFE),是PHP匿名函数的标准用法之一:

  • 匿名函数本身属于callable可调用类型,只要是合法的可调用表达式,后面紧跟调用括号()就可以直接执行,不需要提前赋值给变量。
  • 示例1直接在调用括号里传入实参786、333、$mysqli,和匿名函数定义的三个形参一一对应,不需要提前在父作用域定义同名变量,也不需要使用use关键字导入变量,参数直接进入匿名函数的独立作用域使用,完全符合语法规则。

三个示例的差异

  • 示例1:调用时直接传入所有需要的参数,适合不需要复用父作用域变量的场景,写法更简洁,作用域隔离更彻底。
  • 示例2:你贴出的示例2其实属于错误写法,匿名函数定义了两个必填形参,但调用时没有传入对应实参,运行时会抛出ArgumentCountError参数缺失错误。
  • 示例3:通过use关键字导入父作用域的已有变量,适合需要复用父作用域已定义变量的场景。

官方依据说明

PHP官方文档中对匿名函数的定义明确说明,匿名函数是实现了Closure类的可调用对象,所有可调用表达式都支持直接加()执行,这种写法从PHP 5.3版本引入匿名函数起就支持,7.0之后进一步完善了表达式调用的兼容性,在所有支持匿名函数的PHP版本中都可以正常使用。


内容的提问来源于stack exchange,提问作者user31782

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 19:15:01