/** * 实例化验证 * @access public * @param array $rules 验证规则 * @param array $message 验证提示信息 * @return Validate */ public static function make($rules = [], $message = []) { if (is_null(self::$instance)) { self::$instance = new self($rules, $message); } return self::$instance; }
/** * 获取验证规则的默认提示信息 * @access protected * @param string|array $type 验证规则类型名称或者数组 * @param string $msg 验证提示信息 * @return void */ public static function setTypeMsg($type, $msg = null) { if (is_array($type)) { self::$typeMsg = array_merge(self::$typeMsg, $type); } else { self::$typeMsg[$type] = $msg; } }
/** * 获取数据自动验证或者完成的规则定义 * @access protected * @param mixed $rules 数据规则 * @param string $config 配置参数 * @return array */ protected static function getDataRule($rules, $config) { if ($rules instanceof \think\Model) { // 读取模型设置的规则 $rules = $rules->getProperty($config); } elseif (is_string($rules)) { // 读取配置文件中的数据类型定义 $config = Config::get($config); if (isset($config['__pattern__'])) { // 全局字段规则 self::$rule = $config['__pattern__']; } if (strpos($rules, '.')) { list($name, $group) = explode('.', $rules); } else { $name = $rules; } $rules = isset($config[$name]) ? $config[$name] : []; if (isset($config['__all__'])) { $rules = array_merge($config['__all__'], $rules); } } if (isset($rules['__option__'])) { // 参数设置 $options = $rules['__option__']; unset($rules['__option__']); } else { $options = []; } if (isset($group) && isset($options['scene'][$group])) { // 如果设置了验证适用场景 $scene = $options['scene'][$group]; if (is_string($scene)) { $scene = explode(',', $scene); } } else { $scene = []; } return [$rules, $options, $scene]; }