2016-09-22 9 views
0

私は変数を持つクラスUserを持っています:private $ uPass;PHP OOP - 外部変数からvar_dumpでアクセスできるprivate変数?

私は、Userのインスタンスを作成し、そのインスタンスでvar_dumpを実行すると、すべてのプライベート変数がリストされていることに気付きましたか? これを無効にする方法はありますか?

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

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

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

そして、出力は単にパスワードを含むすべてのものを、示し ... は勿論、彼らは暗号化されているが、それでも彼らはこのようなアクセスできるようにしたくありません!

これを解決する正しい方法は何ですか?

+2

var_dump()は、プライベート変数にアクセスするのと同じではありません。彼らはまだあなたのコードにアクセスすることはできません。あなたのクラス、デバッグツール、そしてリフレクションだけに。 –

+0

var_dumpが問題である場合、[ReflectionClass](http://stackoverflow.com/questions/11604946/can-i-get-the-value-of-a-private-property-with-reflection)もチェックしてください データベースツールから隠すことができないように、値を「非表示」にすることはできません。 PHPで値を入力してDBでテストするのを避けることができます。 – Gectou4

答えて

2

それはそれがないと言い、まさにやっている:

オブジェクトが__debugInfo()メソッドを実装していない限り、オブジェクトのすべて、官民および保護されたプロパティが出力に返されます(PHP 5.6.0で実装)。

カスタム__debugInfoメソッドを実装することもできますし、代わりに気になることをやめることもできます。ソースコードやオブジェクトのシリアル化されたコピーに誰かがアクセスした場合、これはセキュリティ上のリスクに過ぎません。

関連する問題