Как будет правильнее?

Создал класс FistArena, который наследует класс Arena. Создать функцию getMode() в FistArena, которая просто возвращает строку с названием режима, т.е ‘fist’, либо же создавать свойство mode в классе Arena и туда вставлять название мода? Изменение этого свойства не предпринимается.

Озвучить как это звучит :slight_smile:

Что непонятно?

ну по принципу инкапсуляции в таком случае обычно как раз делают приватное поле и публичный геттер для него. но если ты делаешь только для себя, то делай как нравится

можно просто абстрактный метод getMode у суперкласса, а в дочерних его реализовать

тебе нужно просто представление режима для вывода игрокам или для каких-то операций в самом коде?

Да, я так же и делать собираюсь

Хотя, я так подумал, можно и без этой функции обойтись, просто $arena instanceof FistArena, так же принято делать?

да, нормальная практика

1 лайк

когда функция на вход принимает интерфейс или абстрактный класс, а внутри проверка на конкретный тип

Смысл от инкапсуляции, если простая функция с ретурном менее требовательна к памяти, хех

в пхп нам не приходится думать о памяти, а объявление лишней переменной ни на что не повлияет

в любом случае про инкапсуляцию я здесь не к месту сказал, не сразу понял вопрос. естественно тут хватит абстрактного метода в суперклассе

но иногда встречал что делают приватное поле и публичный геттер для него. нет никакой разницы, это просто стиль кода

это и есть правильно

“единственное правильное” решение существует только у вас, майнкрафтеров, где вы все подряд клеймите “гкод”-ом

в реальности есть несколько паттернов и люди делают так, как нравится

Сог