PHP Standard Library (PSL) 5.0 正式发布。作为 PHP 社区中专注于类型安全和异步编程的标准库,这次更新在架构上进行了大规模重构,引入了包括加密、二进制处理、网络栈重写在内的多个组件。

由于 PSL 5.0 明确要求 PHP 8.4+ 版本,开发者在本地调试时可能会遇到环境限制。如果需要快速搭建 PHP 8.4 环境,可以使用 ServBay。
ServBay 支持多个 PHP 版本同时运行,能够一键安装 PHP 环境,并且能随时切换,方便在不影响现有项目的前提下测试 PSL 5.0 的新特性。

PSL 的类型组件不依赖反射,而是通过组合子的方式验证数据。这在处理不可信的外部输入时,能够确保数据符合预期的结构。
use Psl\Type;// 定义一套用户信息校验规则$schema = Type\shape([ 'id' => Type\positive_int(), 'email' => Type\non_empty_string(), 'active' => Type\bool(), 'meta' => Type\optional(Type\dict(Type\string(), Type\mixed())),]);// 校验并获得类型完备的数据$validatedData = $schema->coerce($inputPayload);PSL 5.0 继续深化基于 Fiber 的并发模型。开发者可以像编写同步代码一样处理异步任务,避开了传统回调或 Promise 嵌套带来的复杂性。
use Psl\Async;use Psl\TCP;use Psl\IO;Async\main(static function(): int { // 并发执行多个网络请求 [$clientA, $clientB] = Async\concurrently([ static fn() => TCP\connect('service-a.internal', 8000), staticfn() => TCP\connect('service-b.internal', 9000), ]); IO\write_error_line('所有连接均已建立成功'); return 0;});针对 PHP 原生数组在索引和关联类型上的模糊定义,PSL 提供了 Vec(列表)和 Dict(字典)组件。这些组件通过纯函数处理数据,返回类型更加明确。
use Psl\Vec;use Psl\Dict;use Psl\Str;$users = ['nick', 'john', 'alice'];// 统一转为大写$upperNames = Vec\map($users, Str\uppercase(...));// 过滤掉长度不足的名称$filtered = Vec\filter($users, fn($u) => Str\length($u) >= 4);// 构建键值对映射$mapping = Dict\pull($users, fn($u) => Str\reverse($u),fn($u) => $u);PSL 5.0 重写了底层的网络栈。无论是 TCP、UDP 还是 Unix Socket,所有的网络操作都支持异步非阻塞模式,并且提供了更加安全的 TLS 支持。
use Psl\Async;use Psl\TCP;use Psl\IO;Async\main(static function(): int { $socket = TCP\listen('0.0.0.0', 9001); IO\write_error_line('服务器已在 9001 端口启动'); while ($connection = $socket->accept()) { Async\run(static function() use ($connection) { $connection->writeAll("Welcome to PSL Server\n"); $connection->close(); })->ignore(); }});新版本引入了基于 libsodium 的加密组件,涵盖了对称与非对称加密、数字签名以及密钥派生等功能。这些 API 的设计遵循了“难以误用”的原则。
use Psl\Crypto\Symmetric;// 快速生成密钥并进行数据加密$key = Symmetric\generate_key();$secretMessage = Symmetric\seal('需要保护的原始数据', $key);// 解密还原数据$original = Symmetric\open($secretMessage, $key);PSL 5.0 的发布为 PHP 开发者提供了一套更严谨、更具现代感的底层工具链。开发者可以低成本地将这些新技术应用到实际的研发工作中。
欢迎关注ServBay 服务号👇

立即下载ServBay,加速你的工作效率