get_object_vars în PHP

Returnează proprietățile unui obiect și valorile lor, ca tablou asociativ.

Sintaxă
get_object_vars(object $object): array

Ce face get_object_vars

get_object_vars transformă proprietățile unui obiect într-un tablou nume => valoare. Este util pentru a salva un obiect în baza de date sau pentru a-l transforma în JSON.

Funcția ține cont de locul din care este apelată: din afara clasei vezi doar proprietățile public; din interiorul clasei le vezi și pe cele private și protected. Proprietățile cu tip care nu au primit încă valoare nu apar.

Parametri

Parametru Descriere
$object Obiectul ale cărui proprietăți se citesc.

Ce returnează

Un tablou asociativ cu proprietățile accesibile.

Exemple

Exemplul 1: Din exterior și din interiorul clasei

<?php
class Utilizator
{
    public function __construct(
        public string $nume,
        public string $oras,
        private string $parola,
    ) {
    }

    public function toateDatele(): array
    {
        return get_object_vars($this);
    }
}

$u = new Utilizator("Ana", "Iași", "secret");
print_r(get_object_vars($u));
print_r($u->toateDatele());

Rezultat

Array
(
    [nume] => Ana
    [oras] => Iași
)
Array
(
    [nume] => Ana
    [oras] => Iași
    [parola] => secret
)

Exemplul 2: Obiect în JSON

<?php
class Produs
{
    public function __construct(public string $nume, public float $pret)
    {
    }
}

$p = new Produs("Husă", 39.9);
echo json_encode(get_object_vars($p), JSON_UNESCAPED_UNICODE);

Rezultat

{"nume":"Husă","pret":39.9}

Greșeli frecvente

  • Te aștepți să vezi proprietățile private din afara clasei. Nu apar. Dacă ai nevoie de ele, scrie o metodă publică în clasă care returnează get_object_vars($this).

Comenzi înrudite

  • get_class / get_parent_class: Returnează numele clasei unui obiect (get_class) sau numele clasei părinte (get_parent_class).
  • property_exists: Verifică dacă o clasă sau un obiect are o proprietate, chiar dacă valoarea ei este null.
  • json_encode: Transformă un tablou sau obiect PHP în text JSON.