errors = null; if ($isFile) { $this->scheme = simplexml_load_file($scheme); } else { $this->scheme = simplexml_load_string($scheme); } // foreach validation section foreach($this->scheme as $name => $node) { if ((string) $name != 'errors') { $validator = (string) $name['validator']; // foreach field foreach($node->fields as $field) { $requestObject = $this->getReference($field['type']); eval("$validator::check({$field['id']}, {&$requestObject}))"); } echo (string) . '
'; } } die(); $this->prepareErrorArray(); } private function addError($field, $name, $error, $otherData = null) { $error = str_replace('*field*', (string) $name, (string) $error); if (is_array($otherData)) { foreach($otherData as $key => $data) { $error = str_replace("*$key*", $data, $error); } } $this->errors[(string) $field] = $error; } private function prepareErrorArray() { var_dump($this->errors); } private function getReference($type) { switch($type) { case 'get': return $_GET; break; case 'post': return $_POST; break; case 'cookie': return $_COOKIE; case 'file': return $_FILES; default: throw new Exception('Bad variable type'); } } } class checkNumeracy extends validator { static function check($value) { if (is_numeric($value, $requestObject)) { return true; } else { return true; } } } class checkPresence extends validator { static function check($value, $requestObject) { return isset($requestObject[(string) $value]); } } $scheme = file_get_contents('valid.xml'); $v = new validator($scheme, false);