Laravel 设计模式之装饰器模式
在所有讨论的设计模式中,“四人”原著中的装饰器设计模式最吸引我。它的简单而强大(即广泛的使用/适用性)使它成为我个人的最爱。然而,这种简单性和实用性经常被忽视,取而代之的是,焦点被转移到了“哦,过度工程化”或“过早的抽象是万恶之源!”(因为有一个接口在使用中)。虽然我并不是说从来都不是这样,但我认为可以公平地说,用同一把刷子对每个用例和实现进行标记是明显不公...
使用别名增强 Laravel 开发工作流程
命令行别名是缩短现有命令或将一组命令组合为一个有意义的单词或缩写的便捷方法。今天,我将与大家分享一些我最常用的别名,帮助我每天节省时间。随着时间的推移,这可能会导致节省数小时甚至数天的时间,甚至更少的错误。让我们深入研究。如何添加别名打开 ~/.bashrc (或者,如果使用的是 ZSH, .zshrc)。别名的结构非常简单,由一个简单的键/值对组成:ali...
如何安全地使用 Laravel Facade
这个问题在 Laravel 文档中也不是特别清晰,不过 Facade 有一件事可能会在系统中导致意外漏洞:Facade 像单例与匿名函数绑定的传统服务容器不同,Facade 保留了解析过的实例并在未来 Facade 调用中使用它。我们来看看 Laravel 的代码: /** * Resolve the facade root instance...
Laravel 服务容器介绍
Laravel 服务容器(Service Container)可能有点神秘,尤其是如果你不经常使用它的话。在这篇文章中,我将解释如何使用它,以及应该避免哪些常见错误。Laravel 服务容器的工作方式优美而强大,允许您轻松地注入依赖项,解析定制的服务,用假的服务替换实时服务进行测试,甚至可以创建在整个应用中持久化属性的单例(Singleton)。...
Laravel Octane 现已支持 FrankenPHP
Laravel Octane 通过使用高性能服务器比如 Open Swoole、Swoole 和 RoadRunner 来提高应用的性能。2023 年 12 月 19 日起,它也开始支持 FrankenPHP。
Laravel 中的 API 版本控制:正确操作的完整指南
确保 API 保持一致性和可靠性类似于在风暴期间保持船只稳定。随着应用的增长和变化,你需要管理 API 的不同版本。Laravel 是一个流行的 PHP 框架,它提供了大量的工具来帮助您在这些波涛汹涌的水域中导航。但有这么多路要走,你如何确保自己走在正确的道路上?请进入 API 版本控制。您可以通过多种方式对 Laravel API 进行版本控制,但最直接的...
在 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...
Laravel Tailwind Merge - 解决 Laravel 中的 Tailwind CSS 合并问题
Laravel Tailwind Merge 是一个自动解决 Laravel 中 Tailwind CSS 类冲突的包。这允许您合并多个 Tailwind 类并解决冲突。以下是 README 文件中的一个基本示例。在 blade 组件中提供的以下代码: