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

App\Models\Topic

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

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

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

这两种做法有什么利弊吗

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
Summer
最佳答案

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

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

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

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

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

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

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

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

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

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

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

2年前 评论

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