【问题标题】:PHP instanceof returns false for true conditionPHP instanceof 在 true 条件下返回 false
【发布时间】:2015-07-28 11:50:53
【问题描述】:

我非常困惑为什么 php 的 instanceof 运算符坚持认为这里的 LVALUE 不是已定义类的实例,而 get_class 说它是。

class WhereIn {
    public function __construct($args) {
        echo "is instanceof: " . ($args[0] instanceof ActiveRecordField) . EOL;
        echo "get class: " . get_class($args[0]) . EOL;
    }
}

这个方法的输出是:

is instanceof: 
get class: ActiveRecordField

作为参考,我使用的是 PHP 5.6.9。

【问题讨论】:

标签: php types instanceof


【解决方案1】:

如果您在代码中使用命名空间,则需要直接提供:

if ($args[0] instanceof ActiveRecordField) // False

if ($args[0] instanceof \MyCompany\Classes\ActiveRecordField) // True

【讨论】:

    【解决方案2】:

    正如@Pmpr 提到的,您需要直接提供它。

    你可以像下面这样包含类:

    use \MyCompany\Classes\ActiveRecordField;
    
    class WhereIn {
        public function __construct($args) {
            echo "is instanceof: " . ($args[0] instanceof ActiveRecordField) . EOL;
            echo "get class: " . get_class($args[0]) . EOL;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2016-04-29
      • 1970-01-01
      • 2014-10-18
      • 2013-06-29
      • 2013-06-22
      • 1970-01-01
      • 2012-06-29
      • 2012-06-20
      • 2023-04-04
      相关资源
      最近更新 更多