# PHP 类型系统:别再让变量“想是什么就是什么”
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 看起来像其他语言,而是让大型项目更容易理解和维护。
- 点赞
- 收藏
- 关注作者
评论(0)