PHP instanceof returns false 对于 true 条件
PHP instanceof returns false for true condition
我完全不明白为什么 php 的 instanceof
运算符坚持认为这里的 LVALUE 不是定义的 class 的实例,而 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.
如果在代码中使用命名空间,需要直接提供:
if ($args[0] instanceof ActiveRecordField) // False
if ($args[0] instanceof \MyCompany\Classes\ActiveRecordField) // True
如@Pmpr 所述,您需要直接提供。
您可以像下面这样包含 class:
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;
}
}
我完全不明白为什么 php 的 instanceof
运算符坚持认为这里的 LVALUE 不是定义的 class 的实例,而 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.
如果在代码中使用命名空间,需要直接提供:
if ($args[0] instanceof ActiveRecordField) // False
if ($args[0] instanceof \MyCompany\Classes\ActiveRecordField) // True
如@Pmpr 所述,您需要直接提供。
您可以像下面这样包含 class:
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;
}
}