PHP OOP - 可以从外部类访问var_dump的私有变量?

时间:2016-09-22 12:19:53

标签: php class oop private

我有一个带有变量的用户类:private $ uPass;

我刚注意到在创建User实例时,我在该实例上运行var_dump,它只列出了所有私有变量? 有什么办法可以解决这个问题吗?

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

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

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

然后输出只显示一切,包括密码...... 当然,它们是加密的,但仍然不希望它们像这样被访问!?

解决这个问题的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

它完全按照它的说法行事:

  

除非对象实现__debugInfo()方法(在PHP 5.6.0中实现),否则将在输出中返回对象的所有公共,私有和受保护属性。

因此,您可以实施自定义__debugInfo方法,或者只是停止担心它。如果有人可以访问您的源代码或对象的序列化副本,这只是一个安全风险,这两者都可能是更广泛安全问题的迹象。