不确定变量是否存在时 return 变量的最佳实践
Best practice to return a variable when you're not sure if it exists
假设我想要 return 一个对象,其中包含有关请求页面的客户端的信息。我以 PHP 为例。像这样:
public function getClientInformation(){
return [
"ip" => $_SERVER["REMOTE_ADDR"],
"request_uri" => $_SERVER["REQUEST_URI"],
"refferer" => $_SERVER["HTTP_REFERER"]
];
}
问题是:不知道是否设置了referrer。如何正确检查它是否已设置,如果没有设置 return 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
];
}
非常感谢你的帮助
在 php
中你可以使用 Error Control Operators,像这样:
public function getClientInformation(){
return [
"ip" => $_SERVER["REMOTE_ADDR"],
"request_uri" => $_SERVER["REQUEST_URI"],
"refferer" => @$_SERVER["HTTP_REFERER"]
];
}
如果有警告(如果调用未定义的索引)或错误,它将 return 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
];
}
上面的代码 shorthand。
"refferer" => $_SERVER["HTTP_REFERER"] ?? false; // PHP 7
"refferer" => isset($_SERVER["HTTP_REFERER"]) ?: $_SERVER["HTTP_REFERER"] : false; // < PHP 7
假设我想要 return 一个对象,其中包含有关请求页面的客户端的信息。我以 PHP 为例。像这样:
public function getClientInformation(){
return [
"ip" => $_SERVER["REMOTE_ADDR"],
"request_uri" => $_SERVER["REQUEST_URI"],
"refferer" => $_SERVER["HTTP_REFERER"]
];
}
问题是:不知道是否设置了referrer。如何正确检查它是否已设置,如果没有设置 return 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
];
}
非常感谢你的帮助
在 php
中你可以使用 Error Control Operators,像这样:
public function getClientInformation(){
return [
"ip" => $_SERVER["REMOTE_ADDR"],
"request_uri" => $_SERVER["REQUEST_URI"],
"refferer" => @$_SERVER["HTTP_REFERER"]
];
}
如果有警告(如果调用未定义的索引)或错误,它将 return 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
];
}
上面的代码 shorthand。
"refferer" => $_SERVER["HTTP_REFERER"] ?? false; // PHP 7
"refferer" => isset($_SERVER["HTTP_REFERER"]) ?: $_SERVER["HTTP_REFERER"] : false; // < PHP 7