function __construct($rules, $values = null) { foreach ($rules as $field => $rule) { $this->rules[$field] = []; list($label, $rule) = explode('#', $rule); $checkers = explode('|', $rule); foreach ($checkers as $checker) { list($func, $params) = explode(':', $checker); $params = explode(',', $params); $this->rules[$field][$func] = compact('label', 'params'); } } if (!$values) { $values = Input::all(); } $this->values = array_intersect_key($values, $rules); }