假设我想返回一个对象,其中包含有关请求页面的客户端的信息。我以PHP为例。像这样:
public function getClientInformation(){
return [
"ip" => $_SERVER["REMOTE_ADDR"],
"request_uri" => $_SERVER["REQUEST_URI"],
"refferer" => $_SERVER["HTTP_REFERER"]
];
}
问题是:我不知道引荐来源是否已设置。如何正确检查是否设置,如果不是,则返回false。这是我想出来的,但我不喜欢它:
public function getClientInformation(){
$referrer = false;
if(array_key_exists("HTTP_REFERER", $_SERVER)){
$referrer = $_SERVER["HTTP_REFERER"];
}
return [
"ip" => $_SERVER["REMOTE_ADDR"],
"request_uri" => $_SERVER["REQUEST_URI"],
"refferer" => $referrer
];
}
感谢您的帮助
答案 0 :(得分:1)
rvm install 2.5.1 --with-openssl-dir=/usr/bin/openssl
答案 1 :(得分:0)
在php
中,您可以使用Error Control Operators,如下所示:
public function getClientInformation(){
return [
"ip" => $_SERVER["REMOTE_ADDR"],
"request_uri" => $_SERVER["REQUEST_URI"],
"refferer" => @$_SERVER["HTTP_REFERER"]
];
}
如果有警告(如果调用未定义的索引)或错误,将返回false,但请确保在何处使用它。
或者您可以使用内联?
运算符:
public function getClientInformation(){
return [
"ip" => $_SERVER["REMOTE_ADDR"],
"request_uri" => $_SERVER["REQUEST_URI"],
"refferer" => isset($_SERVER["HTTP_REFERER"])? $_SERVER["HTTP_REFERER"] : false
];
}
在php 7.0
中有null coalesce operator ??
:
public function getClientInformation(){
return [
"ip" => $_SERVER["REMOTE_ADDR"],
"request_uri" => $_SERVER["REQUEST_URI"],
"refferer" => $_SERVER["HTTP_REFERER"] ?? false
];
}
这是上述代码的简写。