塞特没有相应的吸气剂

时间:2011-11-06 21:17:19

标签: php oop properties getter-setter

  

可能重复:
  Do write-only properties have practical applications?

当然,没有二传手的吸气手总是有意义的。只读属性。明白了,没问题。

但是我现在正在维护一些代码,但是那里有安装者,但没有吸气剂,我对此感到困惑。

我有什么理由对添加吸气剂犹豫不决吗?我很难想象一个设置,可以将值更改为调用者想要的任何值(在setter中没有健全性检查),但是告诉调用者当前值是什么并不好。

代码恰好是PHP,如果由于某种原因这很重要。

3 个答案:

答案 0 :(得分:2)

有很多有效的案例。

考虑一下(原谅我的PHP - 它的垃圾):

class User {
    protected $password;
    public function setPassword($newPassword) {
        $this->password = sha1($newPassword);
    }
    public function verifyPassword($against) {
        return $this->password == sha1(against);
    }
}

我们不希望密码哈希或以其他方式在对象外部可见,但我们不希望在对象中存储未散列的值。我们也不想破解封装以进行密码验证。

答案 1 :(得分:0)

有一种观点认为,任何不需要满足要求的东西都不应该被编码。我想有些人甚至会将这种哲学扩展到吸气者和制定者身上。

答案 2 :(得分:0)

正如在Do write-only properties have practical applications?中指出的那样,为随机数生成器设置种子是一个非常简单的例子,让没有getter的setter完全有意义。