为什么与is_a和instanceof不同?

时间:2019-01-04 10:55:37

标签: php

php版本5.4.116

我的代码

$options = @SimpleXml_load_file( $this->config );
//print_r($options);
echo " is_a( \$options , 'SimpleXMLElement') <br />";
var_dump( is_a( $options , 'SimpleXMLElement' ));
echo "<br /> \$options instanceof SimpleXMLElement <br />";
var_dump($options instanceof SimpleXMLElement);

*结果

is_a( $options , 'SimpleXMLElement')
bool(true)
$options instanceof SimpleXMLElement
bool(false) 

我想知道返回值不同的原因。

*我的代码包含命名空间

namespace project\controller;

$options = SimpleXml_load_file( 'data.xml' );

$cname='SimpleXMLElement';
echo ' is_a( $options , $cname )  : ';
var_dump( is_a( $options , $cname ));
echo ' $options instanceof $cname :';
var_dump($options instanceof $cname);

echo ' $options instanceof SimpleXMLElement : ';
var_dump( $options instanceof SimpleXMLElement );
echo ' $options instanceof \SimpleXMLElement  : ';
var_dump( $options instanceof \SimpleXMLElement );

结果

is_a( $options , $cname )  : bool(true)
$options instanceof $cname :bool(true)
$options instanceof SimpleXMLElement : bool(false)
$options instanceof \SimpleXMLElement  : bool(true)

*没有命名空间的结果

  

//命名空间项目\控制器;

is_a($ options,$ cname):bool(true)

$ options instanceof $ cname:bool(true)

$ Options instanceof SimpleXMLElement:bool(true)

$ options instanceof \ SimpleXMLElement:bool(true)

0 个答案:

没有答案