Php:暴露一个班级的私人成员

时间:2018-03-24 20:13:11

标签: php oop object

我有一个类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)
}

}

1 个答案:

答案 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;
    }
}