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).