Почему laravel отправляет работу в __destruct? - PullRequest
0 голосов
/ 21 апреля 2020

Я пришел из C ++ фона и привык к Приобретение ресурсов - это Инициализация (RAII) , что ресурс получается в конструкторе и освобождается в деструкторе.

Так что я считаю, что это Немного трудно понять этот laravel код, который отправляет задание в деструкторе, https://github.com/laravel/framework/blob/6.x/src/Illuminate/Foundation/Bus/PendingDispatch.php

/**
 * Handle the object's destruction.
 *
 * @return void
 */
public function __destruct()
{
    app(Dispatcher::class)->dispatch($this->job);
}

Например, что если в коде отправки будет сгенерировано исключение? Разве нет лучшего места для отправки работы, чем в __destruct?

И мой следующий вопрос: RAII все еще применяется в php?

...