在对象自己的类中使用property vs getter / setter

时间:2015-07-24 18:50:24

标签: php unit-testing oop phpunit getter-setter

假设我有一个A类,它有另一个B类作为其属性。

当A类需要对B类进行修改时,最好使用getter方法进行修改或直接访问属性进行访问吗?

以此为例。

public class Car() {
    private $engine;

    public function __constructor() {
        $this->$engine = new Engine();
    }

    public function getEngine() {
        return $this->engine;
    }

    public function replaceEngine() {
        // Should I use
        $this->engine->change();

        // Or should I use
        $this->getEngine()->change();
    }
}

我正在考虑使用getter方法,这样如果我必须存根Class Engine方法,我可以模拟getEngine()返回的内容并删除依赖项。

但我希望看到更多关于此的意见。

谢谢!

1 个答案:

答案 0 :(得分:0)

基于意见的问题在堆栈溢出方面做得不好,但你真的应该使用getter和setter。

这种方法是更好的编程实践,原因有几个。

- 您可以轻松使用模拟课程

- 如果您需要更新类以响应属性更改(或将来可能)。例如:setSpouse函数可以更新配偶'和' relationshipStatus'属性

- 如果您想进行重构