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