完整流程比較複雜且冗長,我就直接就重點講了,基本上在加入 Queue 時會進行一系列處理,那其中就會執行到這段: CallQueuedHandler protected function setJobInstanceIfNecessary(Job $job, $instance) { // class_uses_recursive 可以取得類所使用到的 trait if (in_array('Illuminate\Queue\InteractsWithQueue', class_uses_recursive(get_class($instance)))) { // 所以假如類有 use Illuminate\Queue\InteractsWithQueue // 就呼叫 setJob($job) $instance->setJob($job); } return $instance; } 而 setJob 則是 InteractsWithQueue 的方法,單純的賦值 InteractsWithQueue public function setJob(JobContract $job) { $this->job = $job; return $this; }
完整流程比較複雜且冗長,我就直接就重點講了,基本上在加入
Queue
時會進行一系列處理,那其中就會執行到這段:CallQueuedHandler
而
setJob
則是InteractsWithQueue
的方法,單純的賦值InteractsWithQueue