public static function validate($field, $value, $validation) { foreach ($validation as $key => $condition) { switch ($key) { // required case 'required': $resultField = self::validateRequired($field, $value, $condition); break; // file // file case 'image': $resultField = File::validateImage($field, $condition); break; case 'document': $resultField = File::validateDocument($field, $condition); break; // type // type case 'date': case 'datetime': $resultField = self::validateDate($field, $value, $condition); break; case 'password': case 'string': case 'richtext': case 'text': $resultField = self::validateString($field, $value, $condition); break; case 'integer': case 'static': case 'enum': case 'status': case 'version': $resultField = self::validateInteger($field, $value, $condition); break; case 'multipleKey': case 'foreignKey': case 'singleKey': case 'media': $resultField = self::validateForeignKey($field, $value, $condition); break; case 'decimal': $resultField = self::validateNumeric($field, $value, $condition); break; // other // other case 'exactLength': $resultField = self::validateExactLength($field, $value, $condition); break; case 'maxLength': $resultField = self::validateMaxLength($field, $value, $condition); break; case 'minLength': $resultField = self::validateMinLength($field, $value, $condition); break; case 'letters': $resultField = self::validateLetters($field, $value, $condition); break; case 'alphanumeric': $resultField = self::validateAlphaNumeric($field, $value, $condition); break; case 'filename': $resultField = self::validateFilename($field, $value, $condition); break; case 'username': case 'name': $resultField = self::validateName($field, $value, $condition); break; case 'url': $resultField = self::validateUrl($field, $value, $condition); break; case 'email': $resultField = self::validateEmail($field, $value, $condition); break; case 'phone': $resultField = self::validatePhone($field, $value, $condition); break; case 'equal': $resultField = self::validateEqual($field, $value, $condition); break; case 'different': $resultField = self::validateDifferent($field, $value, $condition); break; case 'maxValue': $resultField = self::validateMaxValue($field, $value, $condition); break; case 'minValue': $resultField = self::validateMinValue($field, $value, $condition); break; default: Log::log(Error::VALIDATION, $key, __FILE__, __LINE__); $resultField = new Field($field); } if ($resultField->getResult() == ResultType::ERROR) { return $resultField; } } return new Field($field); }