2014-10-01 4 views
1

Цель состоит в том, чтобы получить некоторые точные значения $_GET в свойстве класса, а:

  1. удаления любого ключа не нужный
  2. дефолтом значения, когда ключи не определены

с помощью этого кода в файле /request.php:

$req = new request(); 
var_dump($req); 
class request { 
    private $Get; 
    function __construct() { 
    $this->Get = filter_input_array(INPUT_GET,array (
     'menu'=>array (
     'filter'=>FILTER_VALIDATE_INT, 
     'options'=>array (
      'default'=>30, 
     ), 
    ), 
    )); 
    } 
} 

от php's man page for filter_input_array() около третьего параметра (истина по умолчанию):

Добавить недостающие ключи в NULL для возвращаемого значения.

Я хотел бы ожидать, что вызов domain.com/request.php дало бы дефолт [так] массив с целым числом 30 в качестве значения menu «ы. Однако, когда нет $_GET не определены (то есть, когда нет никакого символа после знака вопроса в URL) filter_input_array возвращает null поэтому var_dump это:

объект (запрос) # 1 (1) {[ "Получить «:» запрос ": частная] => NULL}

однако когда $_GET определен (то есть, имеющий, по меньшей мере, один символ после знака вопроса в URL), такие, как вызов domain.com/request.php?a даст:

объект (запрос) # 1 (1) {[ "Получить": "запрос": частная] => Array (1) {[ "Меню"] => NULL}}

Как я могу заставить filter_input_array(), чтобы вернуть массив, чтобы значения по умолчанию были построены, даже если я вызываю URL-адрес без значения $ _GET, определенного как index.php?

Кажется возможным переписать запрос из .htaccess, чтобы я мог имитировать значение $ _GET, если оно отсутствует, но оно кажется странным.

ответ

1

Почему бы не использовать другой простой способ?

var_dump(filter_var_array($_GET, array(
    'key' => FILTER_DEFAULT, 
), true)); 
Смежные вопросы