Operadores de Matrices
Estructuras de Control
Operadores
PHP Manual

## Operadores de Tipo

instanceof es usado para determinar si una variable PHP es una instancia de objeto de cierta clase:

Example #1 Uso de instanceof con clases

`<?php
class MiClase
{
}
class NoMiClase
{
}
$a = new MiClase;
var_dump($a instanceof MiClase);
var_dump($a instanceof NoMiClase);
?>`

El resultado del ejemplo seria:

    bool(true)
    bool(false)

instanceof puede ser usado también para determinar si una variable es una instancia de objeto de una clase que hereda de una clase padre:

Example #2 Uso de instanceof con clases heredadas

`<?php
class ClasePadre
{
}
class MiClase extends ClasePadre
{
}
$a = new MiClase;
var_dump($a instanceof MiClase);
var_dump($a instanceof ClasePadre);
?>`

El resultado del ejemplo seria:

    bool(true)
    bool(true)

Para chequear si un objeto no es una instancia de una clase, el operador lógico not puede ser usado.

Example #3 Uso de instanceof para chequear si un objeto no es instancia de una clase

`<?php
class MiClase
{
}
$a = new MiClase;
var_dump(!($a instanceof stdClass));
?>`

El resultado del ejemplo seria:

    bool(true)

Por último, instanceof puede ser usado también para determinar si una variable es una instancia de objeto de una clase que implementa una interfaz:

Example #4 Uso de instanceof para una clase

`<?php
interface MiInterfaz
{
}
class MiClase implements MiInterfaz
{
}
$a = new MiClase;
var_dump($a instanceof MiClase);
var_dump($a instanceof MiInterfaz);
?>`

El resultado del ejemplo seria:

    bool(true)
    bool(true)

Aunque instanceof es usado por lo general con un nombre de clase literal, también puede usarse con otro objeto o una variable tipo cadena:

Example #5 Uso de instanceof con otras variables

`<?php
interface MiInterfaz
{
}
class MiClase implements MiInterfaz
{
}
$a = new MiClase;
$b = new MiClase;
$c = 'MiClase';
$d = 'NoMiClase';
var_dump($a instanceof $b); // $b es un objeto de la clase MiClase
var_dump($a instanceof $c); // $c es una cadena 'MiClase'
var_dump($a instanceof $d); // $d es una cadena 'NoMiClase'
?>`

El resultado del ejemplo seria:

    bool(true)
    bool(true)
    bool(false)

Hay algunas trampas comunes de las que hay que tener cuidado. En versiones anteriores a PHP 5.1.0, instanceof llamaría __autoload() si el nombre de clase no existía. Adicionalmente, si la clase no estaba cargada, ocurriría un error fatal. Esto puede ser evitado usando una referencia dinámica de clase, o una variable tipo cadena que contenga el nombre de clase:

Example #6 Evitar búsquedas de nombres de clase y errores fatales con instanceof en PHP 5.0

`<?php
$d = 'NoMiClase';
var_dump($a instanceof $d); // no acurre un error fatal aquí
?>`

El resultado del ejemplo seria:

    bool(false)

El operador instanceof fue introducido en PHP 5. Anteriormente is_a() era usado, pero desde entonces is_a() ha sido marcada como función obsoleta, prefiriéndose el uso de instanceof. Note que a partir de PHP 5.3.0, is_a() ya no es considerada una función obsoleta.

Vea también get_class() e is_a().

Operadores de Matrices
Estructuras de Control
Operadores
PHP Manual