【问题标题】:PHP - object passed to if conditionPHP - 传递给 if 条件的对象
【发布时间】:2013-08-22 13:55:53
【问题描述】:

当你将一个对象传递给 if 时到底发生了什么,像这样:

class TestClass {
  ...
}
$obj = new TestClass();

if($obj) { // what exactly is going on here ?
  ...
}

【问题讨论】:

    标签: php object type-conversion


    【解决方案1】:

    由于您的变量是一个对象,因此将始终被视为 true- 即条件将始终通过,除非 TestClass 的构造函数由于某种原因不会实例化对象。您可以查看type-judging page 以了解 PHP 如何处理类型转换(在本例中,转换为布尔类型)

    【讨论】:

    • 那么无论如何,这个表达式总是正确的?
    • 是的,您的变量将被视为布尔值 - 在 PHP 中,所有对象都被视为 true。 IE。除非TestClass 的构造函数由于某种原因不会实例化对象,否则条件将始终通过。
    【解决方案2】:

    它会告诉你,如果你的$obj 存在

    【讨论】:

    • 不,它没有。它只是使用/假设 isset() 的肮脏和错误的方式。
    【解决方案3】:

    php 会将您的表达式转换为布尔值。因为这是一个现有对象,所以这将被转换为 TRUE(从 Php 5+ 开始,在 php4 中这将被转换为 FALSE - 我认为):

    http://www.php.net/manual/en/language.types.boolean.php#language.types.boolean.casting

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-13
      • 2011-12-20
      • 2020-07-12
      • 2012-01-10
      • 2020-03-21
      • 1970-01-01
      • 2013-06-18
      • 1970-01-01
      相关资源
      最近更新 更多