PHP 8.0 新特性
PHP 8.0 有哪些重磅更新
PHP 8.0 是一个大版本更新,带来了很多革命性的特性。
1. JIT 编译
PHP 8.0 引入了 JIT(即时编译),性能大幅提升,计算密集型场景性能翻倍。
2. 命名参数
array_filter(array: $array, callback: fn($x) => $x > 0);
不用按顺序传参,写参数名就行,可读性更好。
3. 枚举 Enum
enum Status: string
{
case Pending = 'pending';
case Active = 'active';
case Rejected = 'rejected';
}
4. 构造函数属性提升
class User {
public function __construct(
public int $id,
public string $name
) {}
}
不用再写 $this->id = $id 了,构造函数直接定义属性。
5. 空安全运算符
$user?->getAddress()?->city;
不用层层判断 null,有 null 直接返回 null。
6. Match 表达式
$result = match($status) {
200 => '成功',
404 => '未找到',
default => '未知'
};
比 switch 更简洁,还能直接赋值。
7. 联合类型
function foo(int|string $input) {}
参数可以是多种类型。
总结
PHP 8.0 是现代 PHP 的起点,类型系统更完善,语法更现代。新项目强烈推荐用 PHP 8.0+。
MySQL 8.0 新特性
MySQL 8.0 有哪些重要更新
MySQL 8.0 是目前最主流的大版本,相比 5.7 提升很大。
1. 性能提升
8.0 的性能比 5.7 提升约 2 倍,尤其是读取和写入并发场景下提升明显。
2. 原子 DDL
8.0 支持原子 DDL,建表、删表操作要么全成功要么全失败,不会出现一半成功一半失败的情况。
3. 窗口函数
支持窗口函数,比如 ROW_NUMBER()、RANK(),做排名统计很方便:
SELECT name, score,
RANK() OVER (ORDER BY score DESC) as rank
FROM students;
4. CTE 公共表表达式
支持 WITH 语法,复杂 SQL 写起来更清晰:
WITH top_users AS (
SELECT id, name FROM users WHERE vip = 1
)
SELECT * FROM top_users;
5. JSON 增强
JSON 操作函数更丰富,性能也更好,基本可以替代 MongoDB 的简单场景。
6. 隐藏索引
可以把索引设为隐藏状态,不删除但暂时不用,用来测试索引是否真的有用。
7. 字符集变化
默认字符集从 latin1 改成了 utf8mb4,支持 Emoji 表情。
总结
MySQL 8.0 是目前新项目的首选,性能好、特性全。老项目从 5.7 升级要注意兼容性,尤其是 SQL 模式和函数变化。