_Shell = $Shell; } /** * Loads/constructs a task. Will return the instance in the collection * if it already exists. * * @param string $task Task name to load * @param array $settings Settings for the task. * @return Task A task object, Either the existing loaded task or a new one. * @throws MissingTaskFileException, MissingTaskClassException when the task could not be found */ public function load($task, $settings = array()) { list($plugin, $name) = pluginSplit($task, true); if (isset($this->_loaded[$name])) { return $this->_loaded[$name]; } $taskClass = $name . 'Task'; App::uses($taskClass, $plugin . 'Console/Command/Task'); if (!class_exists($taskClass)) { if (!class_exists($taskClass)) { throw new MissingTaskClassException($taskClass); } } $this->_loaded[$name] = new $taskClass( $this->_Shell->stdout, $this->_Shell->stderr, $this->_Shell->stdin ); $enable = isset($settings['enabled']) ? $settings['enabled'] : true; if ($enable === true) { $this->_enabled[] = $name; } return $this->_loaded[$name]; } }