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