SplitParamsStr($params_str); } /** * Splits tag params into associative array * * @param string $params_str * @access private */ function SplitParamsStr($params_str) { preg_match_all("/([a-zA-Z0-9_.]+)=([\"']{1,1})(.*?)(? $val){ $values[$val[1]] = str_replace('\\' . $val[2], $val[2], $val[3]); } $this->AddParams($values); } /** * Sets new parameter value * * @param string $name * @param string $val * @access public */ function Set($name, $val) { //echo "sessing params: [$name] = [$val] (class: ".get_class($this).")
"; $this->_Params[strtolower($name)] = $val; } /** * Removes parameter * * @param string $name * @access public */ function Remove($name) { unset($this->_Params[$name]); } /** * Gets parameter value by parameter name * * @param string $name * @param int $mode * @return string * @access public */ function Get($name, $mode=FALSE_ON_NULL) { // echo " name : '$name' || mode : $mode
"; $name = strtolower($name); if (array_key_exists($name, $this->_Params)) return $this->_Params[$name]; else return $mode == FALSE_ON_NULL ? false : ''; } /** * Mass parameter setting from hash * * @param Array $params * @access public */ function AddParams($params) { if (!is_array($params)) return; /*if (count($this->_Params) == 0) { $this->_Params = $params; } else {*/ foreach ($params as $name => $val) $this->Set(strtolower($name), $val); //} } /** * Return all paramters as hash * * @return Array * @access public */ function GetParams() { return $this->_Params; } } /*class RefParams extends Params { function Set($name, &$val) { $this->_Params[$name] =& $val; } function &Get($name) { if (isset($this->_Params[$name])) return $this->_Params[$name]; else return false; } }*/ // ################### TESTS ############################ global $suite; if (isset($suite)) { class TestParams extends TestCase { function testParamsOperations() { $params =& new Params(); $params->Set('test_var', 24); $this->AssertEquals(24, $params->Get('test_var')); $this->AssertFalse($params->Get('none_existant_param')); $res = $params->GetParams(); $this->AssertEquals(24, $res['test_var']); } function testSplitParams() { $params =& new Params('test_param="abc" another_param="7"'); $this->AssertEquals('abc', $params->Get('test_param')); $this->AssertEquals('7', $params->Get('another_param')); } } $suite->addTest(new TestSuite("TestParams")); } /* function getmicrotime(){ list($usec, $sec) = explode(" ",microtime()); //echo "Usec: $usec, sec: $sec
"; return ((float)$usec + (float)$sec); } $total = 0; $params =& new MyParams(); $param_str = "param1=\"1\" param2='atessafa \'sdf' params3=\"asd ' \\\"f\""; $param_str = "m:test escape1='-\"-' \t\t \n \t\n escape2=\"+\\\"+\" \n escape3='*\'*' escape4='=\='"; //3852 for ($i=0; $i<1; $i++) { $start = getmicrotime(); $params->SplitParamsStr($param_str); $end = getmicrotime(); $total += $end-$start; } printf ("total: %.8f; average: %.8f
", $total, $total/100); */ ?>