2016-09-22 9 views
0

Ich habe eine Klasse Benutzer mit einer Variablen: private $ uPass;PHP OOP - private Variable zugänglich von außen Klasse mit var_dump?

Ich habe gerade festgestellt, dass beim Erstellen einer Instanz von User und ich eine var_dump für diese Instanz ausführen, die nur alle privaten Variablen auflistet? Gibt es eine Möglichkeit, dies auszuschalten?

class User 
{ 
    private $uId; 
    private $uName; 
    private $uPass; 
    private $uPowers; 

$teamMembers[$count] = new User(); 

foreach ($teamMembers as $teamMember) 
{ 
    var_dump($teamMember); 
} 

Und dann ist der Ausgang alles nur zeigt, einschließlich der Passwörter ... Ofcourse sind sie verschlüsselt, aber sie immer noch nicht wollen, wie diese zugänglich sein !?

Was ist der richtige Weg, um das zu lösen?

+2

var_dump() ist nicht mit dem Zugriff auf private Variablen identisch. Sie sind immer noch nicht für Ihren Code zugänglich. Nur zu Ihrer Klasse, Debugging-Tools und Reflektion. –

+0

Wenn var_dump ein Problem für Sie ist, überprüfen Sie auch [ReflectionClass] (http://stackoverflow.com/questions/11604946/can-i-get-the-value-of-a-private-property-with-reflection) Sie können den Wert von ihnen nicht "verstecken", wie Sie es nicht aus Ihren Datenbank-Tools verstecken können Sie können vermeiden, den Wert in PHP zu füllen und nur auf DB zu testen. – Gectou4

Antwort

2

Es genau tut, was sie sagt, es tut:

Alle öffentlichen, privaten und geschützten Eigenschaften von Objekten in der Ausgabe zurückgegeben werden, es sei denn, das Objekt eine __debugInfo() -Methode (implementiert in PHP implementiert 5.6.0).

So können Sie eine benutzerdefinierte __debugInfo Methode implementieren, oder alternativ einfach aufhören, sich darüber Gedanken zu machen. Dies ist nur ein Sicherheitsrisiko, wenn jemand Zugriff auf Ihren Quellcode oder eine serialisierte Kopie des Objekts hat. Bei beiden handelt es sich wahrscheinlich um Anzeichen für ein wesentlich größeres Sicherheitsproblem.

Verwandte Themen