Скажем, у меня есть класс A, у которого есть другой класс B в качестве его свойства.
Когда классу A нужно внести изменения в класс B, лучше ли использовать метод get для внесения изменений или получить доступ к свойству напрямую для доступа?
Так что в качестве примера.
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 (), и удалить зависимость.
Но я хотел бы видеть больше мнений по этому вопросу.
Спасибо!
Вопросы, основанные на мнениях, плохо справляются с переполнением стека, но вам действительно следует использовать методы получения и установки.
Этот метод является лучшей практикой программирования по нескольким причинам.
-Вы можете легко использовать фиктивные классы
-Если вам нужно обновить класс в ответ на изменение атрибута (или, возможно, в будущем). Например: функция setSpouse может обновлять атрибуты ‘spouse’ и ‘relationsStatus’
-Если вы когда-нибудь хотите сделать рефакторинг
Других решений пока нет …