FrankenPHP v1.0 发布
FrankenPHP 本周刚刚达成了一个重要的里程碑,发布了 v1.0 版本。FrankenPHP 是一个用 Go 编写的现代 PHP 应用程序服务器,只需一个命令就可以为您提供一个生产级 PHP 服务器。它提供了对 Symphony, Laravel, WordPress 等的原生支持:生产级 PHP 服务器,由 Caddy 驱动部署简单——将 PHP 应...
在 PHP 中使用匿名类测试抽象类
抽象类不能直接实例化,这为测试抽象类本身实现的功能时带来了挑战。在这篇文章中,我将分享我解决这一问题的方法。为了说明该技术,让我们假设有一个带有 move() 方法的抽象类 Vehicle,同时在其子类中强制实现 speed() 方法。/app/Utils/Vehicle.phpnamespace App\Utils; use Exception; ab...
Stressless: PHP 压力测试
PestPHP 发布了一个全新的插件:Stressless。这是 Pest PHP 家族的一个新成员,它为 PHP 生态系统带来了压力测试的能力。它与 Pest PHP 无缝集成,将压力测试的强大功能与 Pest 的 Expected API 的简洁和优雅相结合。正如你所看到的,开始使用 Stressless 是毫不费力的——你所需要做的就是使用 Compo...
PHP 8.3: Assert: assert_options()、ASSERT_* 常量 及 assert.* INI 设置弃用
PHP 8.3 弃用了所有 assert.* INI 指令,ASSET_* 常量及 assert_options() 函数。PHP 的 assert() 函数允许定义期望值,该期望值提供“抽查”来断言应用状态。它们可以在开发或测试环境中启用,但当禁用时(例如在生产系统中),这些断言在执行时成本为零。assert(!str_contains($db_name,...
PHP 8.3: SQLite3: 新增 \SQLite3Exception、弃用和修改
PHP 8.3 中的 SQLite 扩展改进了该扩展的错误处理,以鼓励使用 Exceptions,并阻止 PHP 警告的现有行为。SQLite3 扩展当前默认的错误处理方式是发出 PHP 警告。这在 PHP 8.3 中没有改变,PHP 8.3 和其他 PHP 8.x 版本继续在错误时发出 PHP 警告。SQLite3 扩展提供了一个 SQLite3::ena...
Laravel Volt 实时状态
我们来创建一个 Volt 组件,用它来显示实时用户数量。概念要实现该特性,我们需要一个方法来跟踪活跃用户。一个方法是,将活跃用户以日志记入数据库表格。每个条目包含用户 ID 以及何时激活的时间戳。然后,您可以检查最后 5 分钟内或任何其他所需时间段内的活动。另一种方法是在 users 表中添加一个 “last_login_at” 字段。第三种可能性是使用 w...
PHP 8.4 预览: 密码哈希:默认 Bcrypt 成本从 10 改为 12
PHP 8.4 修改了 PHP 内置密码哈希 API 的 cost 参数。PHP 提供了 password_hash、password_verify 和 password_needs_rehash (还有两个附加函数,用于获取支持的算法列表并从哈希中获取信息) 函数以安全散列密码的函数。密码哈希算法及其参数是可配置的,并且算法和参数存储在密码散列本身中,因此...
Laravel Pail - 跟踪日志文件的最简单方式
Laravel Pail 是一个允许您轻松地深入并跟踪应用程序的日志文件的包。Pail 设计用于任何日志驱动程序,非常容易记住,并提供一组有用的过滤器,帮助您快速找到您想要的内容。安装 Laravel Pail安装非常简单,只需从 Composer 获得软件包即可:composer require laravel/pail然后开始跟踪日志:php artis...
如何使用 PHP 将 HTML 转换成普通文本
Hypertext PHP 包将 HTML 转换为纯文本,并出色地处理各种格式错误的 HTML。它的工作原理是将 HTML 字符串作为输入,并删除所有标记,留下纯文本: