$name)); }// getOptionValue function setDefaultParamValues($a) { return CmdOptsV4::_dispatch(__FUNCTION__, array('a' => $a)); } function _dispatch($methodName, $methodParams) { static $defaultParamValues = array(); static $params = NULL; extract($methodParams);// fast hack - simplifies code switch (strtolower($methodName)) { case 'setdefaultparamvalues': { $defaultParamValues = $a; return TRUE; } break; case 'getoptionvalue': { if ($params === NULL) { $params = array(); $i = 1;// we don't need the name of the script as parameter $pName = ''; while ($i < $_SERVER['argc']) { // let's get the leading dashes $_l = strspn($_SERVER['argv'][$i], '-'); if ($_l > 0 && $_l < 3) { // one or two dashes, then we set that the variable is present $pName = substr($_SERVER['argv'][$i], strspn($_SERVER['argv'][$i],'-')); $params[$pName] = TRUE; } else { if ($pName) { // the parameter $pName is present and there is a value for it, so we change from TRUE // to the value. If there is a value set for $pName and not TRUE than we make an // an array by adding the already set value and also adding the $_SERVER['argv'][$i] if (!is_array($params[$pName])) { if ($params[$pName] !== TRUE) { $params[$pName] = array($params[$pName]); $params[$pName][] = $_SERVER['argv'][$i]; } else { $params[$pName] = $_SERVER['argv'][$i]; } } else { $params[$pName][] = $_SERVER['argv'][$i]; } }// if }// if ++$i; }// while }// if if (array_key_exists($name, $params)) { return $params[$name]; } else if (array_key_exists($name, $defaultParamValues)) { return $defaultParamValues[$name]; } else { return NULL; } }// case break; }// switch }// dispatch() } CmdOptsV4::setDefaultParamValues(array('fubar'=>432)); var_dump(CmdOptsV4::getOptionValue('fubar')); var_dump(CmdOptsV4::getOptionValue('bla')); ?>