php函数支持变量类型扩展特性,为参数提供额外的类型信息。扩展特性类型包括:null:允许变量为null。callable:允许变量为可调用对象或函数。iterable:允许变量为可迭代对象(如数组)。array-key:仅适用于数组键,允许键为标量或null。
PHP 函数中的变量类型扩展特性
PHP 函数允许在变量类型声明后使用扩展特性,这可以提供额外的类型提示信息,从而提高代码可读性和可维护性。
扩展特性的类型
立即学习“PHP免费学习笔记(深入)”;
- null:允许该变量为 NULL。
- callable:允许该变量为可调用对象或函数。
- iterable:允许该变量为可迭代对象(例如数组或对象)。
- array-key:仅适用于数组键,允许键为标量或 NULL。
语法
functionName(type $parameterName, type $parameterNameWithExtends = null/callable/iterable/[...]): returnType
实战案例
考虑一个函数 greetUser($name, $age = NULL)。$name 参数被声明为字符串类型,$age 参数被声明为字符串类型或 NULL。
function greetUser(string $name, string|null $age = NULL): string
{
if (isset($age)) {
return "Hello, $name, you are $age years old.";
} else {
return "Hello, $name.";
}
}
echo greetUser("John", 30); // 输出:Hello, John, you are 30 years old.
echo greetUser("Mary"); // 输出:Hello, Mary.
当将可迭代类型扩展用于数组参数时,可以确保该参数是一个数组。
function sumArray(iterable $numbers): int
{
$sum = 0;
foreach ($numbers as $number) {
$sum += $number;
}
return $sum;
}
$numbers = [1, 2, 3, 4, 5];
echo sumArray($numbers); // 输出:15
注意:
- 扩展特性仅用于类型注释,不会影响实际代码的运行方式。
- 可将扩展特性与其他类型提示(例如联合类型、交叉类型)结合使用。