get_class / get_parent_class în PHP

Returnează numele clasei unui obiect (get_class) sau numele clasei părinte (get_parent_class).

Sintaxă
get_class(object $object): string

Ce face get_class / get_parent_class

get_class spune din ce clasă a fost creat un obiect, cu numele complet, inclusiv namespace-ul. Este util la depanare și în mesajele de eroare.

get_parent_class returnează numele clasei extinse sau false dacă clasa nu extinde nimic. Primește un obiect sau numele unei clase.

Din PHP 8 poți scrie mai scurt $obiect::class, care dă același rezultat ca get_class($obiect).

Parametri

Parametru Descriere
$object Obiectul verificat. La get_parent_class poate fi și numele unei clase, ca text.

Ce returnează

Numele clasei, ca text. get_parent_class returnează false dacă nu există o clasă părinte.

Exemple

Exemplul 1: Numele clasei și al părintelui

<?php
class Document {}
class Factura extends Document {}

$f = new Factura();

echo get_class($f) . "\n";
echo $f::class . "\n";
echo get_parent_class($f) . "\n";
var_dump(get_parent_class(new Document()));

Rezultat

Factura
Factura
Document
bool(false)

Exemplul 2: Mesaj de eroare cu tipul primit

<?php
function salveaza(object $entitate): string
{
    return "Salvez un obiect " . get_class($entitate);
}

echo salveaza(new DateTime()) . "\n";
echo salveaza(new ArrayObject());

Rezultat

Salvez un obiect DateTime
Salvez un obiect ArrayObject

Greșeli frecvente

  • Apelezi get_class() fără parametru în afara unei clase sau îi dai o valoare care nu este obiect. Din PHP 8 primești TypeError. Pentru orice tip de valoare folosește get_debug_type.
  • Verifici tipul cu get_class($x) === "Document". Comparația ignoră clasele copil; folosește instanceof.

Comenzi înrudite

  • instanceof: Verifică dacă un obiect este de o anumită clasă, extinde acea clasă sau implementează o interfață.
  • 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_object_vars: Returnează proprietățile unui obiect și valorile lor, ca tablou asociativ.
  • extends / parent::: Creează o clasă nouă pornind de la una existentă (moștenire). Clasa copil primește tot ce are părintele.