Пример #1
0
 /**
  * Validates and type-casts API Request parameters
  *
  * TODO 02/09/2009: Create more informative InvalidArgumentException classes:
  *  InvalidInputException, MissingRequiredParameterException, etc.
  *
  * @param array &$expected Types of checks required for request
  * @param array &$input    Actual request parameters
  * @param array &$optional Array to store optional parameters in
  *
  * @return void
  */
 public static function checkInput(&$expected, &$input, &$optional)
 {
     // Validation checks
     $checks = array("required" => "checkForMissingParams", "alphanum" => "checkAlphaNumericStrings", "ints" => "checkInts", "floats" => "checkFloats", "bools" => "checkBools", "dates" => "checkDates", "encoded" => "checkURLEncodedStrings", "urls" => "checkURLs", "files" => "checkFilePaths", "uuids" => "checkUUIDs");
     // Run validation checks
     foreach ($checks as $name => $method) {
         if (isset($expected[$name])) {
             Validation_InputValidator::$method($expected[$name], $input);
         }
     }
     // Create array of optional parameters
     if (isset($expected["optional"])) {
         Validation_InputValidator::checkOptionalParams($expected["optional"], $input, $optional);
     }
     // Check for unknown parameters
     $allowed = array("action", "_", "XDEBUG_PROFILE");
     if (isset($expected["required"])) {
         $allowed = array_merge($allowed, array_values($expected["required"]));
     }
     if (isset($expected["optional"])) {
         $allowed = array_merge($allowed, array_values($expected["optional"]));
     }
     // Unset any unexpected request parameters
     foreach (array_keys($_REQUEST) as $param) {
         if (!in_array($param, $allowed)) {
             /*
             throw new InvalidArgumentException(
                 'Unrecognized parameter <b>'.$param.'</b>.', 27);
             */
             unset($_REQUEST[$param]);
             unset($_GET[$param]);
             unset($_POST[$param]);
         }
     }
 }