Я немного запутался в том, как работают конструкторы в PHP.
У меня есть класс с конструктором, который вызывается при создании нового объекта.
$foo = new Foo($args);
__construct($params)
вызывается в классе Foo
и выполняет соответствующий код инициализации.
Однако, когда я использую класс для вызова статической функции, конструктор вызывается снова.
$bar = Foo::some_function(); //runs the constructor from Foo
Это заставляет конструктор выполняться, выполняя код инициализации объекта, который я предназначил только для создания нового объекта Foo
.
Неужели я не понимаю, как работают конструкторы? Или есть способ предотвратить выполнение __construct()
, когда я использую класс для выполнения статических вызовов функций?
Должен ли я использовать "фабричную" функцию вместо инициализации объекта? Если да, то в чем смысл конструктора?
:: EDIT ::
У меня есть форма, где пользователи могут загружать фотографии в альбом (create_photo.php) и область, где они могут просматривать альбом (view_photos.php). По форме отправьте:
$photo = new Photo($_FILES['photo'], $_POST['arg1'], ect..);
Конструктор Photo создает и сохраняет фотографию. Однако в view_photo.php, когда я звоню:
$photo = Photo::find_by_id($_POST['id']) //user-defined function to query database
Это вызывает запуск конструктора Photo!