目标是在类的属性中获得$_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's man page for filter_input_array()关于第三个参数(默认为true):
将缺失的密钥添加为返回值为NULL。
我希望调用domain.com/request.php
会产生默认的[sic]数组,其中整数30为menu
的值。但是当没有定义$_GET
时(也就是说,当url中的问号后没有字符时),filter_input_array返回null
因此var_dump是这样的:
对象(请求)#1(1){[" Get":" request":private] => NULL}
但是,如果定义$_GET
(即在网址中的问号后面至少有一个字符),例如调用domain.com/request.php?a
,则会产生:
对象(请求)#1(1){[" Get":" request":private] => array(1){[" menu"] => NULL}}
如何强制filter_input_array()
返回数组,以便即使我调用的网址没有定义为index.php
的$ _GET值,也会构建默认值? < / p>
似乎可以重写来自.htaccess的请求,这样我可以模仿定义的$ _GET值,如果没有,但感觉很奇怪。
答案 0 :(得分:1)
为什么不使用另一种简单的方式?
var_dump(filter_var_array($_GET, array(
'key' => FILTER_DEFAULT,
), true));