Корректно ли выполнять действия в конструкторе?

В самописном проекте есть самописный класс Starter, который призван выполнять начальную конфигурацию MVC приложения (в index.php), точнее, даже не самого приложения, а "окружения".
К примеру, у него есть методы iniConfig() и rewriteHeaders().
Так вот: могу ли я прописать запуск этих методов (сделав их приватными) прямо в его конструкторе, и в index.php тогда писать просто :
new Starter;

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

$starter = new Starter;
$starter->iniConfig();
$starter->rewriteHeaders();

...


Я понимаю, что, возможно, такой метод конфигурации не самый лучший (так как я взял его с потолка), но вопрос скорее в том, допустимо ли выполнять "глобальные" действия в конструкторе объекта, то есть при его создании.
  • Вопрос задан
  • 172 просмотра
Решения вопроса 1
@djay
Конструктор - это механизм инициализации состояния класса. Он создан для того чтобы произвести начальную инициализацию свойств класса, так чтобы его новый обьект мог работать. А всякие проверки на существование файлов, или инициализации других обьектов должны строго выполнять после инициализации состояния.

Это улучшает читабельность, в некоторых случаях даже производельность, и делает код более тестируемым.

И кстати, лучше будет писать так:

$starter = new Starter();
$starter->prepare();


В то время как тело метода prepare() содержит те методы и ту последовательность:

$this->iniConfig();
$this->rewriteHeaders();
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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