Метод конструктор вызывается при инициализации объекта. В контексте PHP его главная задача - инициализировать все свойства значениями, что бы добиться какого-то начального состояния объекта. Так же туда следует передавать все зависимые классы. И крайне не рекомендуется в конструкторе делать что-то сложное, например, как пишет
@hlogeon, кого-то нотифаить о своем присутствии, или с конфигами работать. Это все должно быть по хорошему сделано до инициализации. Если у вас в конструкторе код лезет в файлы/базу то это уже сигнал о плохом дизайне.
class Bar {
public function doSomething() {}
}
class Foo{
private $bar;
private $someConfig;
private $createdAt;
public function __construct(Bar $bar, $someConfig) {
$this->bar = $bar;
$this->someConfig = $someConfig;
$this->createdAt = new \DateTime();
}
}
// загружаем конфиг каким-то образом
// мы не должны заставлять Foo что-то делать еще, что не относится к его задаче
// например он не должен знать как создается класс Bar и что ему нужно
// он не должен ничего знать о том где хранятся конфиги и т.д.
// Для этого можно отдельный класс сделать, который будет знать где брать конфиги
// но не будет знать как эти конфиги используются.
$config = $configurator->getConfig('foo');
$bar = new Bar();
$foo = new Foo($bar, $config);