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.