把观察器写在模型里是不是更好,不用去注册了

App\Models\Topic

public  static  function  boot()
{
     parent::boot();

     static::saving(function ($topic) {
        $topic->excerpt = make_excerpt($topic->body);
     });
}

这样就不需要单独生成观察器文件和AppServiceProvider注册了

这两种做法有什么利弊吗

《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
Summer
最佳答案

首先要知道,PHP 中,所有的代码可以写在一个文件中,就是一个巨大的 index.php 中,项目还是可以正常执行的。

那为什么要分那么多文件呢?

因为方便管理、方便修改、方便定位。几万行,甚至十几万行代码在一个文件里,维护成本非常高。

所以 boot() 方法里写观察者相关逻辑,如 static::saving() ,如果是小项目,或者项目初期,是没啥问题。

但是等项目慢慢变大,变复杂以后,发现 Topic.php 文件变得很臃肿,这个时候就需要重构了,将各自的逻辑摘出来放到各自的文件中。也就是课程里现在教的做法。

3年前 评论
讨论数量: 1
Summer

首先要知道,PHP 中,所有的代码可以写在一个文件中,就是一个巨大的 index.php 中,项目还是可以正常执行的。

那为什么要分那么多文件呢?

因为方便管理、方便修改、方便定位。几万行,甚至十几万行代码在一个文件里,维护成本非常高。

所以 boot() 方法里写观察者相关逻辑,如 static::saving() ,如果是小项目,或者项目初期,是没啥问题。

但是等项目慢慢变大,变复杂以后,发现 Topic.php 文件变得很臃肿,这个时候就需要重构了,将各自的逻辑摘出来放到各自的文件中。也就是课程里现在教的做法。

3年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!