# PHP 类型系统:别再让变量“想是什么就是什么”

举报
yd_220371319 发表于 2026/10/08 21:59:59 2026/10/08
【摘要】 PHP 很灵活,但大型项目中过度依赖这种灵活性会增加维护成本。## 参数类型```phpfunction add(int $a, int $b): int{    return $a + $b;}```## strict_types```php<?phpdeclare(strict_types=1);```这样类型行为更加明确。## nullable```phpfunction findUs...


PHP 很灵活,但大型项目中过度依赖这种灵活性会增加维护成本。

## 参数类型

```php
function add(int $a, int $b): int
{
    return $a + $b;
}
```

## strict_types

```php
<?php
declare(strict_types=1);
```

这样类型行为更加明确。

## nullable

```php
function findUser(int $id): ?User
{
    // ...
}
```

表示返回 `User` 或 `null`。

## Union Type

```php
function format(int|string $value): string
{
    return (string) $value;
}
```

联合类型可以解决真实需求,但不要让一个函数接受一堆完全不同的输入。

## DTO

复杂业务中可以使用 DTO:

```php
final class CreateUserData
{
    public function __construct(
        public readonly string $name,
        public readonly string $email
    ) {}
}
```

相比到处传关联数组,DTO 更容易理解和维护。

## readonly

创建后不应该修改的数据可以考虑 `readonly`。

## 小结

类型系统的价值不是让 PHP 看起来像其他语言,而是让大型项目更容易理解和维护。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。