Laravel Eloquent - Trait vs Observer

时间:2018-04-03 19:18:28

标签: laravel eloquent

让我们说我有一些模型与#34; slug"。在保存模型时,我想自动设置slug。

我做这件事的第一个猜测是创建一个观察者并对'#34;创建"做出反应。事件。但经过短暂的谷歌搜索后,我找到了https://github.com/spatie/laravel-sluggable

为什么他们更喜欢Traint over Observers?何时使用Traits,何时应使用观察者?

2 个答案:

答案 0 :(得分:1)

Observers不是什么新东西,而是Laravel Framework中的类

  

您可以使用观察者将所有侦听器分组到一个类中。 Observers类的方法名称反映了您希望收听的Eloquent事件

Trais用于重复使用代码

  

Traits是一种在单继承语言(如PHP)中重用代码的机制。 Trait旨在通过使开发人员能够在生活在不同类层次结构中的几个独立类中自由地重用方法集来减少单个继承的某些限制。

你在模型中使用了包的特征,它完成了所有的段塞机制

答案 1 :(得分:0)

您链接的Spatie包使用特征来实现代码model,他们会像events [here]一样倾听observer node-red-contrib-http-request-multipart 1}}。

他们这样做是为了通过trait

轻松实现这些功能