我有一个传递给Session对象的DB对象的实例,因为Session对象有几个方法可以利用DB对象来执行 SQL 语句,我计划将此DB对象存储在Session对象属性中。
通过测试发现,print_r
暴露了存储在Session对象属性中的DB对象;输出中包含 db 用户/密码。
所以我的想法是将DB对象存储在一个私有静态成员中,以防止在Session对象print_r
上调用此信息时泄露此信息。
这是可以接受的,还是只是对静态成员的错误使用?
什么是防止私有对象财产被泄露的推荐方法print_r
?
这是代码示例。
前:
class Session
{
public __construct(DB $db)
{
$this->db = $db;
}
}
后:
class Session
{
private static $db;
pubic __construct(DB $db)
{
self::$db = $db;
}
}