plank/laravel-hush

Laravel 框架中无事件方法的针对性版本。

v1.0.1 2024-04-22 22:18 UTC

This package is auto-updated.

Last update: 2024-09-17 09:33:38 UTC


README

PHP Version Support GitHub Workflow Status

Laravel Hush

laravel-hush 是一个 Laravel 包,允许您在执行传入的闭包期间禁用模型事件观察器和处理器。它是一个更针对性的版本,Laravel 内置的 withoutEvents() 方法。

目录

 

安装

您可以通过 composer 安装此包

composer require plank/laravel-hush

 

用法

该包包含一个特质:HushesHandlers

要在一个模型上启用此功能,只需将其包含在该模型中。

它实现了四个方法

withoutObserver(string $observer, Closure $callback)

此方法将在回调执行期间禁用提供的类中所有模型可观察事件的处理器。

例如,假设 User 使用 HushesHandlers。在这个例子中,在回调执行期间,不会调用整个 UserObserver 类中的任何处理器,对于任何可观察事件。

User::withoutObserver(UserObserver::class, function () {
    User::create(['name' => 'John Doe']);
});

withoutObservers(array $observers, Closure $callback)

此方法与 withoutObserver() 相同,但允许您传入一个观察者类数组来禁用。

例如

User::withoutObservers([UserObserver::class, ExpirableObserver::class], function () {
    User::create(['name' => 'John Doe']);
});

withoutHandler(string $event, Closure $callback, array $classes = [])

此方法将在回调执行期间禁用提供的事件的处理器。

如果没有提供类,它将禁用该事件的全部处理器。

当提供类时(包括静态添加处理器的类),它将仅禁用来自提供类的已注册处理器。

在以下示例中,所有 created 事件处理器将被禁用,但如果注册了 creating 处理器,则这些事件处理器仍然会运行。

User::withoutHandler('created', function () {
    User::create(['name' => 'John Doe']);
});

在以下示例中,将禁用 User 模型中定义的所有 created 事件处理器,但如果在 UserObserver 类(或任何其他地方)中有一个 created 处理器,则它仍然会处理该事件。

User::withoutHandler('created', function () {
    User::create(['name' => 'John Doe']);
}, [User::class]);

withoutHandlers(array $events, Closure $callback, array $classes = [])

此方法与 withoutHandler() 相同,但允许您传入一个事件数组来禁用处理器。

 

致谢

 

许可

MIT 许可证 (MIT)。请参阅许可文件以获取更多信息。

 

安全漏洞

如果您在 siren 中发现安全漏洞,请发送电子邮件至 security@plankdesign.com。所有安全漏洞都将得到及时处理。

 

查看我们!

 

Plank 致力于提供有影响力的解决方案,为客户及其用户提供引人入胜的体验。我们致力于数字空间的创新、包容性和可持续性。了解更多关于我们改善网络使命的信息。