instanceof Object

<?php

class a {}

$a = new a;

$b = '\\a';
var_dump($a instanceof $b);
var_dump($a instanceof \a);

// C is not a constant, but a class name (see use)
const object = '\\a';
var_dump($a instanceof object);
use a as c;
var_dump($a instanceof c);

// compile error : unexpected T_CLASS
// var_dump($a instanceof a::class);
// compile error : unexpected T_CONSTANT_ENCAPS_STRING
// var_dump($a instanceof 'a');

object is a type, but it can also be used as a constant name. Then, instanceof accepts it for testing a variable.

There are some other cases around instanceof, which are surprising upon first read.

It is possible to use a string or an object in a variable, but not a direct string, a constant nor a ::class.

See Also

PHP Features

Last updated: 14 July 2026