Laravel 中的 API 版本控制:正确操作的完整指南
确保 API 保持一致性和可靠性类似于在风暴期间保持船只稳定。随着应用的增长和变化,你需要管理 API 的不同版本。Laravel 是一个流行的 PHP 框架,它提供了大量的工具来帮助您在这些波涛汹涌的水域中导航。但有这么多路要走,你如何确保自己走在正确的道路上?请进入 API 版本控制。您可以通过多种方式对 Laravel API 进行版本控制,但最直接的...
Laravel 中的自动修复 URL
Laravel 生态中有两个自动修复 URL 的包:Luke Downing 的包: self-healing-urlsChris Page 的包: laravel-self-healing-urls这包有一个相似的目标:你可以随意更改你的模型的路由slug,或者只部分匹配 URL,当 slug 修改时,你永远不必担心 SEO 索引。这两个包都通过向模型添加...
FrankenPHP v1.0 发布
FrankenPHP 本周刚刚达成了一个重要的里程碑,发布了 v1.0 版本。FrankenPHP 是一个用 Go 编写的现代 PHP 应用程序服务器,只需一个命令就可以为您提供一个生产级 PHP 服务器。它提供了对 Symphony, Laravel, WordPress 等的原生支持:生产级 PHP 服务器,由 Caddy 驱动部署简单——将 PHP 应...
Manticore,一款基于 C++ 的轻量级搜索引擎,Elasticsearch 的替代品!
10倍提升效率,号称取代 Elasticsearch 的轻量级搜索引擎到底有多强悍?Manticore Search介绍Manticore Search 是一个使用 C++ 开发的高性能搜索引擎,创建于 2017 年,其前身是 Sphinx Search 。Manticore Search 充分利用了 Sphinx,显着改进了它的功能,修复了数百个错误,几乎...
在 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 Tailwind Merge - 解决 Laravel 中的 Tailwind CSS 合并问题
Laravel Tailwind Merge 是一个自动解决 Laravel 中 Tailwind CSS 类冲突的包。这允许您合并多个 Tailwind 类并解决冲突。以下是 README 文件中的一个基本示例。在 blade 组件中提供的以下代码: