Best practics ООП?

Меня интересуют небольшие тонкости в написании классов и их свойств. Они не особо вляют на работу, возможно даже их стоит просто отнести к codeStyle.
Упоминаний об этом в интернете я не нашел, просто возник спор с другом. Возможно вы поможете нам его разрешить.

Суть вопроса - у класса есть свойство. По умолчанию оно, например равно 1, и не является константой.
Лучше его объявить во время объявления переменной, или задать значение, например в контроллере, или просто при получении геттером проверять его на существование.
Если в кратце, то как лучше писать?
1.
class one
{
    private $type = 1;
}

2.
class one
{
    private $type;
    public function __construct()
    {
        $this->type = 1;
    }
}

3.
class one
{
    private $type;
    public function getType()
    {
        return $this->type ?? 1;
    }
}


Хотлеось бы услышать поподробнее почему вы именно так считаете, а так же, если этот класс, является сущностью dataMapper или ActiveRecord
  • Вопрос задан
  • 563 просмотра
Пригласить эксперта
Ответы на вопрос 4
e_svirsky
@e_svirsky
Web Developer
2й вариант без сомнений единственно верный.
Ответ написан
BojackHorseman
@BojackHorseman Куратор тега PHP
...в творческом отпуске...
nefone
@nefone
PHP-разработчик
Если это свойство влияет на объект, из-за каких то внешних факторов, то конечно его нужно инициализировать в конструкторе.
class house 
{
    private $type;
    public function __construct($housetype)
    {
        $this->type = $housetype;
    }
}


Конечно в двух словах такое будет сложно объяснить, можно ознакомиться с книгами:
Шаблоны корпоративных приложений
PHP. Объекты, шаблоны и методики программирования
Ответ написан
@BorisKorobkov Куратор тега PHP
Web developer
Первый вариант чище.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
РосТендер Москва
от 130 000 до 150 000 ₽
Amigoweb Магнитогорск
от 40 000 до 70 000 ₽
ЧИТАЙ-ГОРОД Москва
от 140 000 до 210 000 ₽
17 февр. 2020, в 23:30
1100 руб./за проект
17 февр. 2020, в 19:40
500 руб./за проект
17 февр. 2020, в 19:36
5000 руб./за проект