在 Laravel 5 中存储模型观察器(事件)的位置


Where to Store Model Observers (Events) in Laravel 5

只是第一次尝试Laravel事件和观察者。

http://laravel.com/docs/5.0/eloquent#model-observers

我在一些关于 Laravel 4 的旧帖子中看到一个存放它们的好地方就在 app/models/observers .但是在 Laravel 5 中,由于文件夹结构发生了一些变化,我想知道哪里是存储它们的好地方?

我应该将它们存储在Events文件夹中吗?

这是可能有一个错误答案但有多个正确答案的问题之一。我建议我们重新审视一下基础知识。

我相信 Web 应用程序的文件夹结构应该是直观的。第一次查看代码的人应该很快明白在哪里找到什么。所以,这是我的建议。

由于 Laravel 5 在 app 文件夹中有模型,因此您可以将它们命名为Models文件夹。然后,您的模型代码将存放在 app/Models .同样,您可以将模型观察者保持在app/Models/Observers,并相应地为它们命名空间。

您也可以将它们保存在Events文件夹中或app文件夹中的单独Observers文件夹中,但正如我所说,以上内容更直观。

您可以将它们存储在所需的任何位置。Laravel不会为应用程序的独特逻辑强加目录结构。

不过,我不会将它们存储在应用程序/事件目录中,因为它们用于事件类。更合适的位置可能是应用程序/观察者,或者应用程序/模型/观察者,如果你想保持对 Laravel 4 的一些熟悉。

我在同一个模型类文件中定义它们,因为不同的模型不会加载同一个观察器(大多数时候)。

虽然如果你的观察器被不同的模型共享,那么一定要在应用程序文件夹中创建一个单独的文件夹,并将其添加到作曲家自动加载中,并在那里定义观察器类。