@driverx18

Что кому принадлежит из этих объектов?

Есть три класса, например:
Пилот, самолет и двигатель. Как будет правильным:
$pilot = new Pilot($airplane);
или
$airplane = new Airplane($pilot);
По сути, если я хочу дать команду, завести движок, то скорее это должно быть так:
$pilot->airplane->engine->enable();
Пилот в самолете нажимает кнопку включения
или же, пилот тут не нужен, и в целом будет правильным:
$airplane->engine->enable();
?
  • Вопрос задан
  • 138 просмотров
Пригласить эксперта
Ответы на вопрос 4
@user49981
$airplane = new Airplane();
$airplane->fly();

class Airplayne
{
    public function __construct(EngineInterface $engine) {}
    
    public function fly()
    {
        $this->engine->enable();
    }
    
    public function addPilots() {}
}
Ответ написан
tsarevfs
@tsarevfs
C++ developer
Не стоит плодить сущностей без необходимости. Если сомневаетесь нужен ли пилот или нет, значит скорее всего он не нужен.
Пилот владеющий самолетом ситуация чуть более экзотичная как мне кажется. Если взять игру симулятор, то кажется логичным что пилот находится в системе координат самолета а не наоборот.
Ответ написан
SilenceOfWinter
@SilenceOfWinter Куратор тега PHP
та еще зажигалка...
зависит от контекста: если речь о системах самолета, то пилот и движок его составляющие, а если речь о пульте пилота, то самолет и его движок. и связь эта не обязательна должна быть односторонней + сами классы не должны быть строго ограничены такими вот связями.
Ответ написан
Комментировать
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
Фигасе мудрость веков...
Имхо нет смысла вводить зависимость этих компонент, и взаимодействия между ними либо вынести в контроллер, либо создать класс управления, типа П(илоируемый)ЛА/БПЛА, и там уже ввести взаимодействие компонент, ибо возраст/личный счет пилота как бы может быть задействован в другой логике и быть связанным с двигателем не должен.

или же, пилот тут не нужен, и в целом будет правильным:
хз как у вас там логика строится, может и двигатель не нужен как отдельный класс, все на уровне методов и свойств самолета можно реализовать: $airplane->startEngine();
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы