关键是:作业的左侧必须是变量!在您的示例中实现此目的的唯一可能方法是首先评估赋值 – 这实际上是php的作用.
添加括号表明,会发生什么
'' !== $host = $route->getHost()
// is equal to
'' !== ($host = $route->getHost())
// the other way wouldn't work
// ('' != $host) = $route->getHost()
因此条件为真,如果$route-> getHost()的返回值是非空字符串,并且在每种情况下,返回值都分配给$host.
另外,你可以看看PHP的grammer
...
variable '=' expr |
variable '=' '&' variable |
variable '=' '&' T_NEW class_name_reference | ...
如果您仔细阅读运算符precendence manual页面,您会看到此通知
Although = has a lower precedence than most other operators, PHP will still allow expressions similar to the following: if (!$a = foo()), in which case the return value of foo() is put into $a.