【问题标题】:Using property vs getter/setter in object's own class在对象自己的类中使用属​​性与 getter/setter
【发布时间】:2015-10-15 13:15:02
【问题描述】:

假设我有一个类 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 方法,这样如果我必须对类引擎方法进行存根,我可以模拟 getEngine() 返回的内容并删除依赖项。

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

谢谢!

【问题讨论】:

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


    【解决方案1】:

    基于意见的问题在堆栈溢出方面表现不佳,但您确实应该使用 getter 和 setter。

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

    -您可以轻松使用模拟类

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

    -如果你想进行重构

    【讨论】:

    • 感谢@Angzuril 的提示。我不太理解你的第二点。请您详细说明一下吗?
    • @DiegoFu 我正在考虑的具体情况是当您设置实例的属性时。如果您有一个具有属性“配偶”的 Person 实例,当您将“配偶”设置为 John 时,属性“relationshipStatus”应更改为“已婚”。如果代码中有多个位置可以调用 setSpouse,那么该方法也可以处理 relationshipStatus。
    猜你喜欢
    • 1970-01-01
    • 2011-04-27
    • 1970-01-01
    • 1970-01-01
    • 2020-07-18
    • 1970-01-01
    • 2012-09-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多