function __construct($process_classes_folder) { $processes = @glob("{$process_classes_folder}/class.*Process.php"); $this->Logger = LoggerManager::getLogger('JobLauncher'); $jobs = array(); if (count($processes) > 0) { foreach ($processes as $process) { $filename = basename($process); $directory = dirname($process); Core::Load($filename, $directory); preg_match("/class.(.*)Process.php/s", $filename, $tmp); $process_name = $tmp[1]; if (class_exists("{$process_name}Process")) { $reflect = new ReflectionClass("{$process_name}Process"); if ($reflect) { if ($reflect->implementsInterface("IProcess")) { $job = array("name" => $process_name, "description" => $reflect->getProperty("ProcessDescription")->getValue($reflect->newInstance())); array_push($jobs, $job); } else { Core::RaiseError("Class '{$process_name}Process' doesn't implement 'IProcess' interface.", E_ERROR); } } else { Core::RaiseError("Cannot use ReflectionAPI for class '{$process_name}Process'", E_ERROR); } } else { Core::RaiseError("'{$process}' does not contain definition for '{$process_name}Process'", E_ERROR); } } } else { Core::RaiseError(_("No job classes found in {$ProcessClassesFolder}"), E_ERROR); } $options = array(); foreach ($jobs as $job) { $options[$job["name"]] = $job["description"]; } $options["help"] = "Print this help"; $options["piddir=s"] = "PID directory"; $Getopt = new Getopt($options); $opts = $Getopt->getOptions(); if (in_array("help", $opts) || count($opts) == 0 || !$options[$opts[0]]) { print $Getopt->getUsageMessage(); exit; } else { $this->ProcessName = $opts[0]; if (in_array("piddir", $opts)) { $piddir = trim($Getopt->getOption("piddir")); if (substr($piddir, 0, 1) != '/') { $this->PIDDir = realpath($process_classes_folder . "/" . $piddir); } else { $this->PIDDir = $piddir; } } } }
public function testAccessMethods() { $getopt = new Getopt('a'); $getopt->parse('-a foo'); $options = $getopt->getOptions(); $this->assertCount(1, $options); $this->assertEquals(1, $options['a']); $this->assertEquals(1, $getopt->getOption('a')); $operands = $getopt->getOperands(); $this->assertCount(1, $operands); $this->assertEquals('foo', $operands[0]); $this->assertEquals('foo', $getopt->getOperand(0)); }