game2006api/webapp/mt/Parameter.php
aozhiwei 29b999dd71 1
2022-01-04 19:17:36 +08:00

93 lines
2.4 KiB
PHP

<?php
namespace mt;
use phpcommon;
class Parameter {
public static function get($id)
{
return array_key_exists($id, self::getMetaList()) ? self::getMetaList()[$id] : null;
}
public static function getOldParam($id)
{
$meta = self::get($id);
return array(
'id' => $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;
}