类型运算符
检测一个变量是否是某个类的实例。
<?php
class Foo
{
//
}
class Bar
{
//
}
$foo = new Foo();
var_dump($foo instanceof Foo); // bool(true)
var_dump($foo instanceof Bar); // bool(false)
检测一个变量是否不是某个类的实例。
<?php
class Foo
{
//
}
$foo = new Foo();
var_dump(!($foo instanceof stdClass)); // bool(true)
检测一个变量是否是继承自某个父类的子类的实例。
<?php
class Foo
{
//
}
class Bar extends Foo
{
//
}
$bar = new Bar();
var_dump($bar instanceof Foo); // bool(true)
var_dump($bar instanceof Bar); // bool(true)
检测一个变量是否是实现某个接口的实例。
<?php
interface Foo
{
//
}
class Bar implements Foo
{
//
}
$bar = new Bar();
var_dump($bar instanceof Foo); // bool(true)
var_dump($bar instanceof Bar); // bool(true)
检测一个变量是否是某个对象或字符串变量的实例。
<?php
interface Foo
{
//
}
class Bar implements Foo
{
//
}
$bar = new Bar();
$baz = 'Foo';
$qux = 'Bar';
var_dump($bar instanceof $baz); // bool(true)
var_dump($bar instanceof $qux); // bool(true)
如果被检测的变量不是对象,则并不发出任何错误信息而是返回 false
。
<?php
$foo = 1;
var_dump($foo instanceof stdClass); // bool(false)
$bar = [];
var_dump($bar instanceof stdClass); // bool(false)
$baz = null;
var_dump($baz instanceof stdClass); // bool(false)
$qux = false;
var_dump($qux instanceof stdClass); // bool(false)