php中 instanceof有啥用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php中 instanceof有啥用相关的知识,希望对你有一定的参考价值。
例如下面这个代码,是检查是否被继承吗
<?php
interface Drive
public function back();
public function go();
class Car implements Drive
public function go()
echo "我开车往前走";
public function back()
echo"我开车往回走";
class Bike implements Drive
public function go()
echo "我往前骑车";
public function back()
echo "我往回骑车";
function goForward($obj)
if($obj instanceof Drive)
$obj->back();
$tool1=new Car();
$tool2=new Bike();
goForward($tool2);
作用:(1)判断一个对象是否是某个类的实例,(2)判断一个对象是否实现了某个接口。
第一种用法:
<?php$obj = new A();
if ($obj instanceof A)
echo 'A';
第二种用法:
<?phpinterface 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
另外,需注意 instanceof 与 is_subclass_of() 的区别,请看代码:
<?phpclass Foo
public $foobar = 'Foo';
public function test()
echo $this->foobar . "\\n";
class Bar extends Foo
public $foobar = 'Bar';
$a = new Foo();
$b = new Bar();
echo "use of test() method\\n";
$a->test();
$b->test();
echo "instanceof Foo\\n";
var_dump($a instanceof Foo); // TRUE
var_dump($b instanceof Foo); // TRUE
echo "instanceof Bar\\n";
var_dump($a instanceof Bar); // FALSE
var_dump($b instanceof Bar); // TRUE
echo "subclass of Foo\\n";
var_dump(is_subclass_of($a, 'Foo')); // FALSE
var_dump(is_subclass_of($b, 'Foo')); // TRUE
echo "subclass of Bar\\n";
var_dump(is_subclass_of($a, 'Bar')); // FALSE
var_dump(is_subclass_of($b, 'Bar')); // FALSE
?>
输出结果(PHP 5.4.4):
use of test() method
Foo
Bar
instanceof Foo
bool(true)
bool(true)
instanceof Bar
bool(false)
bool(true)
subclass of Foo
bool(false)
bool(true)
subclass of Bar
bool(false) 参考技术A "instanceof"操作符的使用非常简单,它用两个参数来完成其功能。
第一个参数是你想要检查的对象,第二个参数是类名(事实上是一个接口名),用于确定是否这个对象是相应类的一个实例。它的基本语法如下:
if (object instanceof class name)//继承关系
//
本回答被提问者采纳 参考技术B instanceof
用来检测一个给定的对象是否属于(继承于)某个类(class)、某个类的子类、某个接口(interface)。如果是则返回true。 参考技术C 用来判断继承关系的 参考技术D 接口的应用
以上是关于php中 instanceof有啥用的主要内容,如果未能解决你的问题,请参考以下文章