我有一个类User
,它具有用户和公共接口的私有属性。我试图通过OOP公开这些属性,以便将它们的$key=>value
绑定到一些sql参数,但我可以迭代私有成员以提取数据。我已经看到了通常用于调试的var_dump()
方法,因此我创建了一个公共接口userInfo()
,它将该对象作为数组返回。然而,这似乎是一种黑客攻击,而不是在这个应用程序中公开或共享数据的真正有说服力的方式。我已经阅读了大量文章,在课堂上我们被教导要保持成员私密并通过公共接口公开它们。我知道有受保护的成员访问权限,但这是否足够雄辩?那么," good"和我知道那个主观的编码器如何在整个应用程序中共享这些数据?
编辑:无法使用受保护,因为没有扩展用户类
class User{
private $firstname
private $lastname
private $username
private $password
public getFirstName(){}
public getLastName(){}
public getUsername(){}
public getPassword(){}
public userInfo(){
return get_object_vars($this)
}
}
答案 0 :(得分:0)
PHP完全为此目的overloading / magic methods。您不需要以编程方式考虑每个可能的值/字段。看看下面的例子:
class MyClass {
private $firstField;
private $secondField;
public function __get($property) {
if ( property_exists($this, $property) ) {
return $this->$property;
}
}
public function __set($property, $value) {
if ( property_exists($this, $property) ) {
$this->$property = $value;
}
return $this;
}
}