Passe um valor para filter_input () usando a variável

Alguém pode explicar, por que recebo um aviso muito estranho:

filter_input() expects parameter 1 to be long, string given

ao executar o código, isso faz parte da minha classe e parece perfeitamente bem:

public static function Input($type, $data, $filter = 'FILTER_SANITIZE_SPECIAL_CHARS')
  {
    $type = 'INPUT_' . $type;
    return filter_input($type, $data, $filter);
  }

Caso eu mude para, por exemplo:

return filter_input(INPUT_POST, $data, $filter);

Em seguida, o aviso vai para:

filter_input() expects parameter 3 to be long.

Tudo funciona muito bem se eu usar:

return filter_input(INPUT_POST, $data, FILTER_SANITIZE_SPECIAL_CHARS);

Eu percebo que emPHP: filter_input - Manual na descrição está indicado:

Descrição

mixed filter_input ( int $type , string $variable_name [, int $filter = FILTER_DEFAULT [, mixed $options ]] )

Parâmetros

type
   One of INPUT_GET, INPUT_POST, INPUT_COOKIE, INPUT_SERVER, or INPUT_ENV.


Questões:Por que é dito no manualfilter_input ( int $type , - quando nemINPUT_GET nemINPUT_POST e etc sãoINTEGERS.Existe uma maneira de passar um valor parafilter_input usando variável?

questionAnswers(3)

yourAnswerToTheQuestion