private function __construct() { foreach (sgAutoloader::getPaths() as $class => $path) { $class = basename($class); //ignore the base task class if ($class == 'sgTask') { continue; } if (stripos(strrev($class), 'ksaT') === 0) { //This is needed because PHP 5.2.x does not support late static binding call_user_func(array($class, 'configure')); $currentTaskGroup = call_user_func(array($class, 'getTasks')); foreach ($currentTaskGroup as $namespace => $taskList) { if (!isset($this->tasks[$namespace])) { $this->tasks[$namespace] = array(); } foreach ($taskList as $command => $settings) { if (isset($settings['aliases'])) { foreach ($settings['aliases'] as $alias) { $this->aliases[$namespace] = array($alias => $command); } } $this->tasks[$namespace][$command] = $settings; $this->tasks[$namespace][$command]['class'] = $class; } } } } }