@widget_pro

Что значит parent::boot() в модели?

Сейчас читаю один малоизвестный проект, в моделях которого увидел такой код:
public static function boot()
    {
        parent::boot();

        self::creating(function (self $chat) {
            $user = request()->user();
            $chat->created_by = $user->id;
            $chat->count = $chat->people()->count();
        });
    }

Никак не могу найти объяснение такой функции в модели. Как я понимаю, это тот же геттер, то есть функция, которая срабатывает во время создание(creating, но помимо этого, внутри родительского класса есть created, updating,updated,saving,saved) записи в базе? То есть вполне можно было бы установить сеттер и перенести туда эту функцию, если это так, то зачем в родительском классе такой функционал?
  • Вопрос задан
  • 141 просмотр
Решения вопроса 1
Amega
@Amega
Senior PHP Developer
boot() в моделях (как и многое другое) - это уличная магия Laravel'а, от которой вообще лучше избавляться в долгоживущих проектах и никогда больше не вспоминать.

Но ответ простой: в базовом классе Model есть тоже своя логика, которая должна выполнится. По большому счету даже не важно, что там именно происходит, ее просто стоит выполнить. Но в целом там бутятся еще и все используемые в модели трейты:

https://github.com/illuminate/database/blob/master...

Соотв-но, убрав parent::boot() из своей модели, вся эта логика не отработает.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы