我刚刚找到
!$foo = new Bar($var, $var2);
了部分 PHP 代码。什么 ”!” 方法?
问问题
74 次
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
在这种情况下,它绝对没有任何意义。
!
是“逻辑非”运算符,它将计算结果转换TRUE
为FALSE
,反之亦然。它在 PHP 中没有其他特殊含义。
它仅作为布尔测试或作业的一部分才真正有意义,例如:
$false = FALSE;
if (!$false) {
// This code will be executed
}
$true = !$false;
// $true will now be TRUE
在您的示例中使用的上下文中,实例化一个对象只会做以下两件事之一是没有意义的:
- 返回一个对象 - 每个对象的每个实例都将
TRUE
在布尔测试中评估为,但有一个例外:空SimpleXMLElement
。 - 抛出异常。在这种情况下,新实例将被分配到的变量仍将具有以前的值(可能评估为假),但执行将立即离开当前过程,因此永远不会评估测试。
于 2012-07-09T10:18:41.487 回答