【发布时间】:2023-03-07 01:43:01
【问题描述】:
如果我有多个模型并且我处理大量事件,那么在我的 AppServiceProvider 中我会为我的模型创建一个观察者,例如:
class AppServiceProvider extends ServiceProvider
{
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
User::observe(UserObserver::class);
User2::observe(UserObserver2::class);
User3::observe(UserObserver3::class);
User4::observe(UserObserver4::class);
User5::observe(UserObserver5::class);
User6::observe(UserObserver6::class);
User7::observe(UserObserver7::class);
User8::observe(UserObserver8::class);
User9::observe(UserObserver9::class);
}
/**
* Register the service provider.
*
* @return void
*/
public function register()
{
//
}
}
它会造成一些性能损失吗?如果我对每个应用程序访问都正确理解了observe method,它将循环遍历我所有的模型观察者方法并将它们与雄辩的事件相匹配,所以如果我有 30 个模型观察者,它会导致性能不佳吗?
是否有一些巧妙的方法可以仅在模型使用时声明观察类?所以不是在每个应用程序访问中声明观察者,即使在不需要时,每个模型只会在使用时才知道它的观察者?
【问题讨论】:
-
不确定,你的做法可能很独特。如果您将 Laravel 中的事件用于它们的用途,我认为不会存在性能问题。是的,它们都将被启动,但是当您需要其中一个事件时,它们会被潜在地启动并激活。覆盖它们实际上可能会减慢速度。与路由一样,将最常用的事件放在顶部可能很有用,最不可能的事件放在底部。不确定这是否会有所作为,但您可以尝试一下。
-
标签: laravel laravel-5 eloquent laravel-5.4 laravel-eloquent