考虑以下几点:
class MyClass
{
private $var1 = "apple";
private $var2 = "orange";
}
$obj = new MyClass();
if($obj) {
// do this
}
else {
// do that
}
PHP 评估我的对象为真,因为它有成员变量。这个逻辑能以某种方式被覆盖吗?换句话说,当我的类对象被视为 bool 值时,我能否控制其计算结果?
最佳答案
PHP evaluates my object to true because it has member variables.
这是不正确的。 PHP 实际上将 $obj
评估为 true
因为它包含一个对象。它与对象的内容无关。您可以通过从类定义中删除成员来验证这一点,选择 if/else 的哪个分支不会有任何区别。
如果 PHP 持有对对象的引用,则无法使 PHP 将变量计算为 false。您必须为变量分配一些“虚假的”内容,其中包括以下值:
null
array()
""
false
0
参见 Converting to boolean从 PHP 文档中获取在转换为 bool 值时被视为 false
的所有值的列表。
关于php - 将对象评估为 bool 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5572849/