3

我刚刚找到
!$foo = new Bar($var, $var2);
了部分 PHP 代码。什么 ”!” 方法?

4

3 回答 3

4

这 !在这个例子中只是一个否定和无用。

于 2012-07-09T09:02:33.943 回答
1

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

考虑以下代码:

$foo = new Bar($var, $var1);
var_dump(!$foo);        // bool(false)
var_dump($foo == true); // bool(true)
  • 将对象转换为布尔值将始终导致true.
  • 将一个对象与另一个没有对象的对象进行比较===总是会导致true.

因此,对赋值左侧的对象使用否定在这里没有任何效果。

于 2012-07-09T09:07:12.070 回答
1

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

!是“逻辑非”运算符,它将计算结果转换TRUEFALSE,反之亦然。它在 PHP 中没有其他特殊含义。

它仅作为布尔测试或作业的一部分才真正有意义,例如:

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

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

在您的示例中使用的上下文中,实例化一个对象只会做以下两件事之一是没有意义的:

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