public static function get($name = null, $vars = [], $range = '')
{
$range = $range ?: self::$range;
// 空参数返回所有定义
if (empty($name)) {
return self::$lang[$range];
}
$key = strtolower($name);
$value = isset(self::$lang[$range][$key]) ? self::$lang[$range][$key] : $name;
// 变量解析
if (!empty($vars) && is_array($vars)) {
/**
* Notes:
* 为了检测的方便,数字索引的判断仅仅是参数数组的第一个元素的key为数字0
* 数字索引采用的是系统的 sprintf 函数替换,用法请参考 sprintf 函数
*/
if (key($vars) === 0) {
// 数字索引解析
array_unshift($vars, $value);
$value = call_user_func_array('sprintf', $vars);
} else {
// 关联索引解析
$replace = array_keys($vars);
foreach ($replace as &$v) {
$v = "{:{$v}}";
}
$value = str_replace($replace, $vars, $value);
}
}
return $value;
}
/** * 自动表单验证 * @access protected * @param array $data 创建数据 * @param string $type 创建类型 * @return boolean */ public function valid($data, $rule = []) { $validate = $rule ? $rule : $this->validate; // 属性验证 if ($validate) { // 如果设置了数据自动验证则进行数据验证 if ($this->patchValidate) { // 重置验证错误信息 $this->error = []; } foreach ($validate as $key => $val) { // 验证因子定义格式 // array(field,rule,message,condition,type,params) // 判断是否需要执行验证 if (0 == strpos($val[2], '{%') && strpos($val[2], '}')) { $val[2] = Lang::get(substr($val[2], 2, -1)); } $val[3] = isset($val[3]) ? $val[3] : 0; $val[4] = isset($val[4]) ? $val[4] : 'regex'; // 判断验证条件 if (1 == $val[3] || 2 == $val[3] && '' != trim($data[$val[0]]) || 0 == $val[3] && isset($data[$val[0]])) { if (false === $this->_validationField($data, $val)) { return false; } } } // 批量验证的时候最后返回错误 if (!empty($this->error)) { return false; } } return true; }