对象初始化以“!”开头

时间:2012-07-09 08:57:51

标签: php

我刚刚找到了 !$foo = new Bar($var, $var2);
PHP代码的一部分。什么 ”!”装置

3 个答案:

答案 0 :(得分:4)

!在这个例子中,这仅仅是一种否定和无用的东西。

答案 1 :(得分:1)

这没什么特别的。我认为有一个错字。

考虑以下代码:

$foo = new Bar($var, $var1);
var_dump(!$foo);        // bool(false)
var_dump($foo == true); // bool(true)
  • 将对象强制转换为布尔值将始终生成true
  • 将对象与没有===的其他对象进行比较将始终生成true

因此,在赋值左侧的对象上使用否定对此没有任何影响。

答案 2 :(得分:1)

在这种情况下,它绝对没有任何意义。

!是“逻辑非”运算符,它会将评估为TRUE的内容转换为FALSE,反之亦然。它在PHP中没有其他特殊含义。

它只是作为布尔测试或赋值的一部分才有意义,例如:

$false = FALSE;
if (!$false) {
  // This code will be executed
}

$true = !$false;
// $true will now be TRUE

在您使用的上下文中,实例化对象will only ever do one of two things没有意义:

  1. 返回一个对象 - 每个对象的每个实例都将在布尔测试中评估为TRUE,但有一个例外:空SimpleXMLElement
  2. 抛出异常。在这种情况下,新实例将被分配到的变量仍然具有它的先前值(可能评估为false),但执行将立即离开当前过程,因此永远不会评估测试。