* @version 1.0 * */ class Dictionary { public $cacheType; private $ckey_length = 4; private $mmCache = 'table_dictionary_option_all'; private $dict; public function __construct() { } /** * 取得数据字典对应数据 * * @author wangzhoudong * @param string $table_code 数据字典的类型 * @param string $code 数据字典代码 * @param string $val 数据字典数据对应下标 * @return array 返回数据字典数组 * @throws CException $table_code,$code 不能为空 * */ public function get($table_code,$code,$val=null) { $mKey = Cache::get($this->mmCache); if(isset($mKey[$table_code][$code])) { $arr = $mKey[$table_code][$code]; }else{ $this->update($table_code,$code); if(isset($this->dict[$table_code][$code])) { $arr = $this->dict[$table_code][$code]; }else{ $arr = []; } } if(!$arr) { return null; } if($val !== null) { if(array_key_exists($val, $arr)) { return $arr[$val]; }else{ return ''; } }else{ return $arr; } } /** * 获取地区数据名称 * @param int $areaId * $start 排除前面的层级 */ public function areaName($areaId,$spec=" ",$start=1) { if(!$areaId) { return ''; } $objArea = new BaseAreaModel(); $sMerger = ""; $arr = $objArea->select("merger_name")->find($areaId); if(isset($arr->merger_name)) { $aMerger = explode(',',$arr->merger_name); for($i=1,$j=count($aMerger);$i<$j;$i++) { $sMerger .= $spec . $aMerger[$i]; } if($sMerger) { $sMerger = substr($sMerger,strlen($spec)); } } return $sMerger; } public function area($areaId) { if(!$areaId) { return ''; } $objArea = new BaseAreaModel(); $arr = $objArea->find($areaId); if($arr) { $arr = $arr->toArray(); } return $arr; } /** * * @param string $table_code 数据字典的类型 * @param string $code 数据字典代码 * @param string $selection 被选中的值。 * @param array $htmlOptions 额外的HTML属性。如name='cate' ,id='cate'下面两个特定的属性是被认可: * empty: 字符串,指定空选项的文本,它的值为空。 * 'empty'选项也可以是一个值-标签对形式的数组。 * 在一开始每个对都会用于渲染一个列表的选项。注意, * 文本标签不会被HTML编码。 * * */ public function select($table_code, $code, $selection=null, $htmlOptions=array()) { $selectOption = $htmlOptions; unset($selectOption['empty']); $html = ""; return $html; } public function option($table_code,$code,$selection=null) { $data = $this->get($table_code,$code); $html = ""; foreach ($data as $k=>$v) { $html .= "