把观察器写在模型里是不是更好,不用去注册了
App\Models\Topic
public static function boot()
{
parent::boot();
static::saving(function ($topic) {
$topic->excerpt = make_excerpt($topic->body);
});
}
这样就不需要单独生成观察器文件和AppServiceProvider注册了
这两种做法有什么利弊吗
关于 LearnKu
首先要知道,PHP 中,所有的代码可以写在一个文件中,就是一个巨大的 index.php 中,项目还是可以正常执行的。
那为什么要分那么多文件呢?
因为方便管理、方便修改、方便定位。几万行,甚至十几万行代码在一个文件里,维护成本非常高。
所以
boot()方法里写观察者相关逻辑,如static::saving(),如果是小项目,或者项目初期,是没啥问题。但是等项目慢慢变大,变复杂以后,发现 Topic.php 文件变得很臃肿,这个时候就需要重构了,将各自的逻辑摘出来放到各自的文件中。也就是课程里现在教的做法。