Ce face instanceof
instanceof returnează true dacă obiectul din stânga este o instanță a clasei din dreapta, a unei clase care o extinde sau implementează interfața din dreapta.
Dacă în stânga nu este un obiect (de exemplu null sau un text), rezultatul este pur și simplu false, fără eroare. Numele clasei poate fi dat și printr-o variabilă care conține textul numelui.
Exemple
Exemplul 1: Clasă, părinte și interfață
<?php
interface Platibil {}
class Document {}
class Factura extends Document implements Platibil {}
$f = new Factura();
var_dump($f instanceof Factura);
var_dump($f instanceof Document);
var_dump($f instanceof Platibil);
var_dump($f instanceof DateTime);
Rezultat
bool(true)
bool(true)
bool(true)
bool(false)
Exemplul 2: Comportament diferit după tip
<?php
function descrie(mixed $valoare): string
{
if ($valoare instanceof DateTimeInterface) {
return "Dată: " . $valoare->format("d.m.Y");
}
if ($valoare instanceof Countable) {
return "Colecție cu " . count($valoare) . " elemente";
}
return "Altceva: " . get_debug_type($valoare);
}
echo descrie(new DateTimeImmutable("2026-12-01")) . "\n";
echo descrie(new ArrayObject([1, 2, 3])) . "\n";
echo descrie(null);
Rezultat
Dată: 01.12.2026
Colecție cu 3 elemente
Altceva: null
Greșeli frecvente
- Pui numele clasei între ghilimele direct:
$x instanceof "Factura"este eroare de sintaxă. Scrie numele fără ghilimele sau folosește o variabilă:$clasa = "Factura"; $x instanceof $clasa. - Verifici tipul cu
get_class($x) === "Document". Asta nu recunoaște clasele copil.instanceofține cont de moștenire.
Comenzi înrudite
is_a / is_subclass_of: Verifică dacă un obiect este de o clasă sau o moștenește (is_a). is_subclass_of exclude clasa însăși.get_class / get_parent_class: Returnează numele clasei unui obiect (get_class) sau numele clasei părinte (get_parent_class).interface / implements: O interfață este o listă de metode pe care o clasă promite să le aibă. Clasa le scrie cu implements.extends / parent::: Creează o clasă nouă pornind de la una existentă (moștenire). Clasa copil primește tot ce are părintele.