Beispiel #1
0
 /**
  * Add a task - or run it immediately when $this->started
  *
  * @param Task $task The task
  *
  * @return $this|mixed $this or the task return value when this is running
  */
 public function addTask(Task $task)
 {
     $deferred = false;
     foreach (array('before', 'after') as $type) {
         if ($task->get($type)) {
             $deferred = true;
             foreach ((array) $task->get($type) as $name) {
                 if ($name === '@self') {
                     $name = $this->get('name');
                 }
                 $key = $type . ':' . $name;
                 $this->job->deferredTasks[$key][] = $task;
             }
         }
     }
     if ($this->initialized || $deferred) {
         $task->initialize();
     }
     if (!$deferred && $this->started) {
         return $this->runTask($task);
     }
     if (!$deferred) {
         $this->tasks[] = $task;
     }
     return $this;
 }