Laravel 11: once() 记忆化辅助函数
once() 函数最初的灵感来自 Taylor Otwell 的这条推文,Spatie 将其制作成一个包,现在已进入Laravel 11 中的 Laravel 框架的核心。这个辅助函数确保无论调用对象方法多少次,都能获得相同的值。当您有一些代码想要确保只运行一次时,once函数非常有用。让我们使用新的 Laravel 11 make:class Artisa...
Laravel 11: 深入了解精简的目录结构
我想你会喜欢下周推出的 Laravel 11 应用程序中的新框架!新人会欣赏极简主义,有经验的开发人员升级不会喷到破坏性的变化。你不必更改Laravel 10 应用结构即可升级到 Laravel 11。如果你想跟随并进行实验,你可以同时创建一个 Laravel 10 和 Laravel 11 项目。我们使用以下命令来执行此操作# Update the ins...
Filament: 2024 年有什么值得期待
2023年对 Filament 来说是不可思议的一年,这种势头一直持续到 2024 年!Filament 核心团队在过去的几个月里花了很多时间来制定我们2024 年的目标,我们很高兴能在这里与您分享!此列表最初是在 Filament 2024 Kickoff 活动期间分享的,因此,如果您想成为...
设计模式之单例(Singleton)模式
意图单例(Singleton)模式一种创建型的设计模式,可以确保类只有一个实例,同时为该实例提供全局访问点。问题描述单例模式同时解决了两个问题,违反了单一职责原则。确保一个类只有一个实例。为什么有人要控制一个类由多少各实例呢?最常见的原因是控制对某些共享资源的访问,例如数据库或文件。它的工作原理如下:想象一下你创建了一个对象,但过了一段时间后决定创建一个新对...
Laravel 11 引入 Dumpable Trait
虽然从技术上讲 Dumpable trait 是 Laravel 11 新增的,我想说的是,它将 dump() 和 dd() 的思想整合为一个可重用的 trait,这样类就不必单独手动实现。应用开发人员和包作者也可以从这种新的 /support trait 中受益,以便在可链接类中轻松添加调试方法。在 Laravel 10 中,我们已经很喜欢能够将...
在 Filament 中处理批量导入
每个应用都处理一定规模的数据。无论数据是 GitHub 仓库中的几个 markdown 文件,还是数万亿字节数据库系统中的数百万行,每天与我们的应用交互的用户都是为了查看和操作这些数据。当应用规模较小且(通常)相对较新时,数据输入看起来与 Filament 中表单的工作方式非常相似。如果要向系统中添加新数据,请转到相关表单,填写字段,然后提交。如果你想添加更...
Laravel 项目中使用 Model shouldBeStrict
你有了一个全新应用的想法。你安装了 Laravel,就可以开始了。你应该做的第一件事是什么?对我来说,我会打开应用的服务提供者,转到 boot 方法并设置全局 Model::shouldBeStrict():public function boot(): void { Model::shouldBeStrict(); }将其打开后,它做了如下这些事:...
Laravel 11:将模型强制转换(casts)移到方法中
Laravel 10 中的模型强制转换(Model casts)是通过 $casts 数组属性定义的。而在 Laravel 11 中,你可以定义 casts()方法,这就打开了在内置 caster 中的静态方法、以及为自定义 casters 定义静态方法的可能:use App\Enums\UserOption; use Illuminate\Databas...
[Laravel 扩展包]在 Laravel 中使用 Blade 视图生成 PDF
由 Spatie 提供的 Laravel PDF 包,提供了一个在 Laravel 中创建 PDF 的简单方式。它使用 Blade 视图渲染 HTML 并且使用 Browsershot 从视图中创建 PDF。这使其可以使用现代 CSS 工具(如 Grid、Flexbox)、现代 CSS 框架(如 Tailwind),甚至可以使用 JavaScript 代码(...
设计模式之责任链(Chain of Responsibility)模式
责任链(Chain of Responsibility )模式是一种行为设计模式,允许沿着处理程序链传递请求。收到请求后,每个处理程序决定处理该请求或将其传递给链中的下一个处理程序。问题描述假设你正在开发一个在线订单系统。您希望限制对系统的访问,以便只有经过身份验证的用户才能创建订单。此外,具有...