/** * Runs the command. * * @param \BLW\Type\Command\IInput $Input * Input object to read data from. * @param \BLW\Type\Command\IOutput $Output * Output object to write data to. * @param integer $flags * Run flags. * @return mixed Result of command. */ public function run(IInput $Input, IOutput $Output, $flags = ICommand::RUN_FLAGS) { // Is mediator set? if (($Mediator = $this->getMediator()) instanceof IMediator) { // Update Input $Input->setMediator($Mediator); $Input->setMediatorID($this->getMediatorID()); // Update Output $Output->setMediator($Mediator); $Output->setMediatorID($this->getMediatorID()); } // Perform pre run $this->doNotify(ICommand::RUN, array('flags' => &$flags)); // Evaluate flags // ..... // Perform run $start = new DateTime(); $return = $this->doRun($Input, $Output); // Perform post run $this->doNotify(ICommand::SHUTDOWN, array('Result' => &$return, 'Start' => &$start)); // Reset Input $Input->clearMediator(); $Input->setMediatorID('*'); // Reset Output $Output->clearMediator(); $Output->setMediatorID('*'); // Done return $return; }