$meta['id'], 'name' => $meta['param_name'], 'value' => $meta['param_value'], 'param_name' => $meta['param_name'], 'param_value' => $meta['param_value'], ); } public static function getByName($name) { self::mustBeNameHash(); $meta = array_key_exists($name, self::$nameHash) ? self::$nameHash[$name] : null; return $meta; } public static function getVal($name, $defVal) { $meta = self::getByName($name); return $meta ? $meta['param_value'] : $defVal; } public static function getListValue($name, $defVal = array()) { $val = self::getVal($name, null); if ($val == null) { return $defVal; } $values = explode('|', $val); return $values; } public static function parseList($name, $separators) { $values = array(); $val = self::getVal($name, null); if (!empty($val) && count($separators) > 0) { function parse($data, $separators, $i, &$arr) { $strs = explode($separators[$i], $data); foreach ($strs as $str) { if ($i + 1 < count($separators)) { $item = array(); parse($str, $separators, $i + 1, $item); array_push($arr, $item); } else { array_push($arr, $str); } } } parse($val, $separators, 0, $values); } return $values; } protected static function getMetaList() { if (!self::$metaList) { self::$metaList = getMetaTable('parameter@parameter.php'); } return self::$metaList; } protected static function mustBeNameHash() { if (!self::$nameHash) { self::$nameHash = array(); foreach (self::getMetaList() as $meta) { self::$nameHash[$meta['param_name']] = $meta; } } } protected static $nameHash; protected static $metaList; }