I'm looking for advice and ways on making it better. [Code](https://github.com/Prashles/Validation) <?php Class Validate { private $_errors = array(); public function __construct() { require_once 'errors.php'; $this->errorText = $errorText; } public function rule($value, $name, $inputRules) { $inputRules = explode('|', $inputRules); foreach ($inputRules as $inputRule) { if (!strlen($value) && $inputRule != 'required') { break; } if (preg_match('/\[(.*?)\]/', $inputRule, $match)) { $rule = explode('[', $inputRule); $rule = $rule[0]; $param = $match[1]; if (!method_exists($this, $rule)) { throw new Exception("Method {$rule} does not exist"); exit; } $call = array($value, $param); } else { if (!method_exists($this, $inputRule)) { throw new Exception("Method {$inputRule} does not exist"); exit; } $rule = $inputRule; $call = array($value); } $response = call_user_func_array(array($this, $rule), $call); if ($response) { $error = $this->errorText[$rule]; $replace = array( ':name' => $name, ':param' => (isset($param)) ? $param : NULL ); $response = str_replace(array_keys($replace), array_values($replace), $error); $this->_errors[] = $response; } } } public function exec() { return (empty($this->_errors)) ? false : $this->_errors; } /* * Rule functions */ public function min_length($value, $param) { return (strlen($value) < $param); } public function max_length($value, $param) { return (strlen($value) > $param); } public function email($value) { return !filter_var($value, FILTER_VALIDATE_EMAIL); } public function required($value) { return (strlen($value) !== 0); } public function ip($value) { return !filter_var($value, FILTER_VALIDATE_IP); } public function match($value, $param) { return ($value != $param); } public function match_exact($value, $param) { return ($value !== $param); } public function match_password($value, $param) { return ($value !== $param); } public function alphanum($value) { return !ctype_alnum($value); } public function url($value) { return !filter_var($value, FILTER_VALIDATE_URL); } public function numeric($value) { return !(is_numeric($value)); } public function min($value) { return ($value < $param); } public function max($value) { return ($value > $param); } }