类型运算符

检测一个变量是否是某个类的实例。

<?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)

results matching ""

    No results matching ""