get_mangled_object_vars în PHP

Returnează toate proprietățile unui obiect, inclusiv cele private și protejate, cu numele lor interne.

Sintaxă
get_mangled_object_vars(object $object): array

Ce face get_mangled_object_vars

Intern, PHP salvează proprietățile private sub numele \0Clasa\0proprietate, iar pe cele protejate sub \0*\0proprietate (\0 este caracterul nul). get_mangled_object_vars returnează aceste nume, indiferent de locul apelului, și ignoră __get și alte mecanisme magice.

Este o funcție pentru biblioteci de serializare și depanare. În codul obișnuit folosește get_object_vars. Același format apare la conversia (array) $obiect.

Parametri

Parametru Descriere
$object Obiectul inspectat.

Ce returnează

Un tablou cu toate proprietățile, cu numele interne drept chei.

Exemple

Exemplul 1: Numele interne ale proprietăților

Înlocuim caracterul nul cu textul \0, ca să fie vizibil.

<?php
class Cont
{
    public string $titular = "Ana";
    protected string $iban = "RO49AAAA1B31007593840000";
    private float $sold = 500;
}

foreach (get_mangled_object_vars(new Cont()) as $cheie => $valoare) {
    echo str_replace("\0", "\\0", $cheie) . " => $valoare\n";
}

Rezultat

titular => Ana
\0*\0iban => RO49AAAA1B31007593840000
\0Cont\0sold => 500

Greșeli frecvente

  • Folosești cheile rezultatului ca nume de proprietăți ($obiect->$cheie). Pentru cele private și protejate, cheia conține caractere nule și nu este numele real.

Comenzi înrudite

  • get_object_vars: Returnează proprietățile unui obiect și valorile lor, ca tablou asociativ.
  • property_exists: Verifică dacă o clasă sau un obiect are o proprietate, chiar dacă valoarea ei este null.
  • public / private / protected: Stabilește cine are acces la o proprietate sau metodă: oricine (public), doar clasa (private) sau și clasele copil (protected).