| // +---------------------------------------------------------------------------+ /** * Abstract task class. * * @package SGL * @author Demian Turner * @abstract */ class SGL_Task { /** * @abstract * */ function run($data = null) { return; } /** * Example ... * @access private */ function &_getDal() { $oServiceLocator = &ServiceLocator::instance(); $oDal = $oServiceLocator->get('dal'); if (!$oDal) { $oDal = &DA_FooBar::singleton(); $oServiceLocator->register('dal', $oDal); } return $oDal; } } /** * Used for building and running a task list. * * @package SGL * @author Demian Turner */ class SGL_TaskRunner { /** * collection of Task objects * @var array */ var $aTasks = array(); var $data = null; function addData($data) { $this->data = $data; } /** * Method to register a new Task object in * the runner collection of tasks * * @param object $oTask of type Task * @return boolean true on add success false on failure * @access public */ function addTask($oTask) { if (is_a($oTask, 'SGL_Task')) { $this->aTasks[] = & $oTask; return true; } return PEAR::raiseError('an SGL_Task object was expected'); } function main() { $ret = array(); foreach ($this->aTasks as $k => $oTask) { $return = $this->aTasks[$k]->run($this->data); // log to system tmp dir if we're installing if (!defined('SGL_INSTALLED')) { $err = is_a($return, 'PEAR_Error') ? print_r($return, 1) : 'ok'; $data = get_class($oTask) .': '. $err; error_log($data); } $ret[] = $return; } return implode('', $ret); } } ?>