php函数声明以function关键字开头,后跟函数名(字母或下划线开头,建议小写+下划线)、括号(不可省略)和花括号包裹的函数体;支持参数类型声明、返回类型声明(含void、?string、...$nums等),需注意声明顺序、作用域及php版本差异。

php中函数声明的基本语法长什么样
PHP函数用 function 关键字开头,后面紧跟函数名、括号和花括号。函数名必须以字母或下划线开头,不能用数字打头,也不区分大小写(但建议小写+下划线风格)。
常见错误现象:Parse error: syntax error, unexpected 'function'——多半是把函数定义写在了类外部却漏了 function 关键字,或者放在了表达式上下文中(比如数组赋值右侧直接写 function() { } 而没用匿名函数语法)。
- 必须有
function关键字,不能省略 - 函数名后括号可空,但括号不能省;
function foo {}是错的,必须写成function foo() {} - 函数体必须用花括号包裹,哪怕只有一行语句
- 函数可以声明在文件顶层、条件块里、甚至另一个函数内部(但不推荐嵌套声明)
带参数和返回值的函数怎么写才不出错
参数列表写在括号内,多个参数用逗号分隔;返回值靠 return 语句,没有 return 默认返回 null。PHP 7+ 支持类型声明和返回类型,加了就严格校验,不加则宽松。
容易踩的坑:TypeError: Return value of foo() must be of the type string, null returned——加了返回类型声明却忘了所有分支都 return;或者参数传了 null 进去,而参数声明是 string $s 且没设默认值也没开 nullable(即没写 ?string)。
立即学习“PHP免费学习笔记(深入)”;
动态WEB网站中的PHP和MySQL详细反映实际程序的需求,仔细地探讨外部数据的验证(例如信用卡卡号的格式)、用户登录以及如何使用模板建立网页的标准外观。动态WEB网站中的PHP和MySQL的内容不仅仅是这些。书中还提到如何串联JavaScript与PHP让用户操作时更快、更方便。还有正确处理用户输入错误的方法,让网站看起来更专业。另外还引入大量来自PEAR外挂函数库的强大功能,对常用的、强大的包
- 参数类型声明写在变量前:
function greet(string $name): string - 允许
null就加问号:function log(?string $msg) - 可变参数用
...(PHP 5.6+):function sum(...$nums) - 返回类型写在括号后,冒号后:
function now(): int - void 返回类型表示“不返回任何值”,写了就不能
return $x,只能return;或不写
为什么函数在调用前声明有时会报错
PHP 解析器是自上而下扫描的,普通函数必须在调用前完成定义,否则会触发 Call to undefined function。但有例外:文件被 include/require 引入时,只要执行流走到定义处,后续就能调用;另外,类方法、匿名函数、以及用 function_exists() 做运行时检查的场景,会让顺序变得模糊。
典型翻车现场:在一个 if 块里定义函数,结果条件没进,调用时直接崩;或者把函数定义放在 return 后面,导致根本不会执行到定义语句。
- 不要在条件分支里定义常规函数,除非你确定该分支一定会执行
- 避免在函数体里再定义新函数(除非明确需要动态生成)
- 如果必须延迟加载,用
include_once把函数单独拎到一个文件里 -
function_exists('foo')可用于安全判断,但别依赖它来绕过声明顺序问题
函数名冲突和作用域要注意什么
PHP 函数是全局作用域的,同名函数不能重复声明,否则报 Cannot redeclare。命名空间对函数无效(PHP 5.6+ 才支持命名空间函数,且需显式用 namespace 声明),所以实际项目中基本靠命名前缀或类静态方法规避冲突。
另一个隐形陷阱:扩展自带函数(如 json_encode)可能和你自己写的同名函数撞车,尤其在低版本 PHP 或启用某些扩展时。
- 自定义函数名尽量加项目/模块前缀,比如
myapp_format_date() - 不要覆盖内置函数名,即使你关了对应扩展,也难保别人环境开着
- 类中定义的方法不是“函数”,不受全局函数规则约束,优先用
public static替代全局函数 - CLI 模式下,多次
require同一文件会导致重复声明,记得用require_once
mixed、never、参数解包行为变化这些点,光看语法容易漏掉运行时表现差异。









