Цель состоит в том, чтобы получить некоторые точные значения $_GET
в свойстве класса пока:
С этим кодом в файле /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 для filter_input_array () о третьем параметре (по умолчанию true):
Добавьте отсутствующие ключи как NULL к возвращаемому значению.
Я ожидаю, что вызов domain.com/request.php
даст массив по умолчанию [sic] с целым числом 30 как menu
ценность. Однако, когда нет $_GET
определены (то есть, когда в вопросе нет знака после вопросительного знака), filter_input_array возвращает null
следовательно, var_dump это:
object (request) # 1 (1) {[«Get»: «request»: private] => NULL}
Однако когда $_GET
определяется (то есть, имея хотя бы один символ после вопросительного знака в URL), такой как вызов domain.com/request.php?a
даст:
object (request) # 1 (1) {[«Get»: «request»: private] => array (1) {[«menu»] => NULL}}
Как я могу заставить filter_input_array()
вернуть массив, чтобы значения по умолчанию были построены, даже если я вызываю URL без значения $ _GET, определенного как index.php
?
Кажется возможным переписать запрос из .htaccess, чтобы я мог имитировать определенное значение $ _GET, если его нет, но это кажется странным.
Почему бы не использовать другой простой способ?
var_dump(filter_var_array($_GET, array(
'key' => FILTER_DEFAULT,
), true));
Других решений пока нет …