在对象自己的 class 中使用 属性 与 getter/setter
Using property vs getter/setter in object's own class
假设我有一个 class A,它有另一个 class B 作为它的 属性。
当classA需要对classB做修改时,用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 引擎方法,我可以模拟 getEngine() returns 并删除依赖项。
但我希望看到更多对此的意见。
谢谢!
基于意见的问题在堆栈溢出方面表现不佳,但您确实应该使用 getter 和 setter。
由于多种原因,此方法是更好的编程实践。
-您可以轻松使用 mock classes
-如果您需要 class 更新以响应属性更改(或将来可能)。例如:setSpouse 函数可以同时更新 'spouse' 和 'relationshipStatus' 属性
-如果您想进行重构
假设我有一个 class A,它有另一个 class B 作为它的 属性。
当classA需要对classB做修改时,用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 引擎方法,我可以模拟 getEngine() returns 并删除依赖项。
但我希望看到更多对此的意见。
谢谢!
基于意见的问题在堆栈溢出方面表现不佳,但您确实应该使用 getter 和 setter。
由于多种原因,此方法是更好的编程实践。
-您可以轻松使用 mock classes
-如果您需要 class 更新以响应属性更改(或将来可能)。例如:setSpouse 函数可以同时更新 'spouse' 和 'relationshipStatus' 属性
-如果您想进行重构