吸气剂Setter也适合在课堂上使用?

时间:2014-08-18 06:42:40

标签: php setter getter

当我通过getter / setter方法直接访问我的私有/受保护类成员时,这是一种糟糕的编程方式吗?

备选方案#1

<?php

class A {
    private $myVariable;

    public function getMyVariable() {
        return $this->myVariable;
    }

    public function doSomething() {
        $variable = $this->getMyVariable();
    }
}

?>

备选方案#2

<?php

class A {
    private $myVariable;

    public function doSomething() {
        $variable = $this->myVariable;
    }
}
?>

您更喜欢哪种方式?我认为第一个解决方案与第二个解决方案相比更具可读性。请让我听听你的意见。

提前致谢。

2 个答案:

答案 0 :(得分:1)

由于您确定这不是重复,我将复制与此案相关的this response点:

  • 与获取或设置属性相关联的行为的封装 - 这允许稍后更轻松地添加其他功能(如验证)。
  • 控制属性的生命周期和内存管理(处置)语义 - 在非托管内存环境(如C ++或Objective-C)中尤为重要。
  • 为属性在运行时更改时提供调试拦截点 - 在某些语言中调试属性更改为特定值的时间和位置可能非常困难。
  • 允许继承者通过覆盖getter / setter方法来更改属性的行为和语义的语义。

答案 1 :(得分:0)

也许你应该以另一种方式思考:为什么我们需要getter / setter?它们抽象直接访问字段。即使Getter除了设置值之外什么都不做,它可以在以后保护你。稍后将字段更改为Getter是一个重大变化,尤其是在PHP IDE(badumm)中。因此,我认为每当您想要保护字段以防止漏洞/错误代码时,请使用getter / setter。