instanceof 運算符 和 is_a() 方法都是判斷:某對象是否屬于該類 或 該類是此對象的父類 或 是否實現了某個接口
是的話返回 TRUE,不是的話返回 FALSE
區別:
instanceof 運算符是 PHP 5 引進的。在此之前用 is_a(),但是后來 is_a() 被廢棄而用 instanceof 替代了。
注意:
PHP 5.3.0 起,又恢復使用 is_a() 了。
總結:
現在PHP的服務環境普遍都使用PHP5.0+了,所以盡量使用 instanceof 來代替 is_a()
綜上,如果你不知道你的服務器環境,那么建議你使用instanceof,以免造成不必要的麻煩
bool is_a ( object $object , string $class_name )
第一種用法:
<?php
$obj = new A();
if ($obj instanceof A) {
echo 'A';
}
第二種用法:
<?php
interface ExampleInterface
{
public function interfaceMethod();
}
class ExampleClass implements ExampleInterface
{
public function interfaceMethod()
{
return 'Hello World!';
}
}
$exampleInstance = new ExampleClass();
if($exampleInstance instanceof ExampleInterface){
echo 'Yes, it is';
}else{
echo 'No, it is not';
}
?>
輸出結果:Yes, it is
<?php
class WidgetFactory
{
var $oink = 'moo';
}
$WF = new WidgetFactory();
if (is_a($WF, 'WidgetFactory')) {
echo "yes, \$WF is still a WidgetFactory\n";
}
?>