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știTypeError. Pentru orice tip de valoare foloseșteget_debug_type. - Verifici tipul cu
get_class($x) === "Document". Comparația ignoră clasele copil; foloseșteinstanceof.
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.