news 2026/6/8 19:36:56

PHP函数参数与返回值类型

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
PHP函数参数与返回值类型

PHP函数参数与返回值类型

PHP从7开始逐步完善了类型系统。函数参数和返回值可以声明类型。今天说说各种类型声明的用法。

基本类型声明。

```php
declare(strict_types=1);

function process(int $id, string $name, float $price, bool $active): array
{
return compact('id', 'name', 'price', 'active');
}

print_r(process(1, '商品', 99.99, true));
?>

可空类型用?表示。

```php
function findUser(int $id): ?array
{
$users = [1 => ['name' => '张三']];
return $users[$id] ?? null;
}

$user = findUser(1);
echo $user['name'] . "\n";
$user = findUser(999);
var_dump($user);
?>

联合类型用|分隔。

```php
function formatValue(int|string|float $value): string
{
return match (true) {
is_int($value) => '整数: ' . number_format($value),
is_float($value) => '浮点数: ' . number_format($value, 2),
is_string($value) => '字符串: ' . $value,
};
}

echo formatValue(42) . "\n";
echo formatValue(3.14) . "\n";
echo formatValue("hello") . "\n";
?>

void类型表示没有返回值。

```php
function log(string $message): void
{
file_put_contents('/tmp/app.log', $message . "\n", FILE_APPEND);
}

log('用户登录');
?>

never类型表示函数不会返回。

```php
function abort(string $message): never
{
throw new RuntimeException($message);
}

function redirect(string $url): never
{
header("Location: $url");
exit;
}
?>

mixed类型表示任意类型。

```php
function debug(mixed $value): void
{
var_dump($value);
}

debug(42);
debug("hello");
debug([1, 2, 3]);
?>

iterable类型表示可遍历。

```php
function processItems(iterable $items): void
{
foreach ($items as $item) {
echo $item . "\n";
}
}

processItems([1, 2, 3]);
processItems(new ArrayIterator([4, 5, 6]));
?>

类型声明让函数的接口更清晰。调用者知道传什么参数、得到什么返回值。开启strict_types后,类型不匹配会直接报错,避免隐式转换导致的bug。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/8 19:36:13

【MATLAB】工业多电机同步控制仿真与实现

【MATLAB】工业多电机同步控制仿真与实现 摘要:在传送带、数控机床、印刷纺织、机器人联动等工业场景中,多电机同步运行精度直接决定设备加工精度与生产线运行稳定性。单电机独立控制模式易受负载扰动、参数差异、机械摩擦影响,出现转速偏差、相位偏移、不同步抖动等问题,…

作者头像 李华
网站建设 2026/6/8 19:27:53

Google Earth Engine(GEE)——将逐日的影像数据转化为每周/月一期影像数据

本文目的是将原有逐日的数据按照周和月的时间来进行合成,然后生成新的影像集合,用于后续的操作,这里所利用的技术就是按照时间属性的差异来来设定指定的时间间隔,完成不同时间段影像的聚合,并将时间属性返回给以周或者月为单位的新的影像集合。 本文使用的数据集为: ER…

作者头像 李华
网站建设 2026/6/8 19:27:07

终极音乐解锁指南:如何快速解锁加密音乐文件

终极音乐解锁指南:如何快速解锁加密音乐文件 【免费下载链接】unlock-music 在浏览器中解锁加密的音乐文件。原仓库: 1. https://github.com/unlock-music/unlock-music ;2. https://git.unlock-music.dev/um/web 项目地址: https://gitcod…

作者头像 李华