2024年PHP开发者大会日本站

内部(内置)函数

PHP 标准库包含许多函数和结构。还有一些函数需要编译特定的 PHP 扩展,否则会出现致命的“未定义函数”错误。例如,要使用诸如 image imagecreatetruecolor() 之类的函数,PHP 必须使用 GD 支持进行编译。或者,要使用 mysqli_connect(),PHP 必须使用 MySQLi 支持进行编译。每个 PHP 版本都包含许多核心函数,例如 字符串变量 函数。调用 phpinfo()get_loaded_extensions() 将显示哪些扩展加载到 PHP 中。另请注意,许多扩展默认情况下是启用的,并且 PHP 手册按扩展名进行划分。有关如何设置 PHP 的信息,请参阅 配置安装 和各个扩展章节。

阅读和理解函数原型在标题为 如何阅读函数定义 的手册部分中进行了说明。了解函数返回什么或函数是否直接对传入的值进行操作非常重要。例如,str_replace() 将返回修改后的字符串,而 usort() 则直接操作传入的变量本身。每个手册页还包含每个函数的特定信息,例如有关函数参数、行为更改、成功和失败的返回值以及可用性信息的信息。了解这些重要(但往往细微)的区别对于编写正确的 PHP 代码至关重要。

注意如果传递给函数的参数与其期望值不符,例如在期望 字符串 的地方传递 数组,则函数的返回值未定义。在这种情况下,它可能会返回 null,但这只是一种约定,不能依赖。从 PHP 8.0.0 开始,在这种情况下应该抛出 TypeError 异常。

注意:

在强制模式下,内置函数的标量类型默认情况下是可为空的。从 PHP 8.1.0 开始,将 null 传递给未声明为可为空的内部函数参数的做法不被鼓励,并且在强制模式下会发出弃用通知,以与用户定义函数的行为保持一致,在用户定义函数中,标量类型需要显式标记为可为空。

例如,strlen() 函数期望参数 $string 为不可为空的 字符串。由于历史原因,PHP 允许在强制模式下为此参数传递 null,并且该参数会隐式转换为 字符串,从而产生 "" 值。相反,在严格模式下会发出 TypeError

<?php
var_dump
(strlen(null));
// 从 PHP 8.1.0 开始,“已弃用:将 null 传递给类型为 string 的参数 #1 ($string) 已弃用”
// int(0)

var_dump(str_contains("foobar", null));
// 从 PHP 8.1.0 开始,“已弃用:将 null 传递给类型为 string 的参数 #2 ($needle) 已弃用”
// bool(true)
?>

添加注释

用户贡献注释

此页面没有用户贡献的注释。
To Top