if(isset($_POST['MoveString'])){
//code here
}
但在symfony中我编写代码
if(isset($request->get('MoveString'))){
//my code here
}
我收到此错误
Compile Error: Cannot use isset() on the result of an expression (you can use "null !== expression" instead)
那么错误的是,他们的结果是否相同?
答案 0 :(得分:2)
根据isset documentation的这一部分:
警告
isset()仅适用于变量,因为传递任何其他内容都会产生 在解析错误。
代码中表达式的结果在哪里?
要弄清楚这一点,请快速查看Request\get
方法的实现:
public function get($key, $default = null)
{
if ($this !== $result = $this->attributes->get($key, $this)) {
return $result;
}
if ($this !== $result = $this->query->get($key, $this)) {
return $result;
}
if ($this !== $result = $this->request->get($key, $this)) {
return $result;
}
return $default;
}
正如您所看到的,例如来自通过$this->attributes
属性调用的ParameterBag
对象,您也可以检查其他属性[查询,请求]对象。
$ result返回表达式的结果
public function get($key, $default = null)
{
return array_key_exists($key, $this->parameters) ? $this->parameters[$key] : $default;
}
所以你只需要 - 如错误解释 - 使用你的陈述如下:
if($request->get('MoveString') !== null){
//my code here
}
甚至更简单:
if($request->get('MoveString')){
//my code here
}