PHP конструкторы и статические функции

Я немного запутался в том, как работают конструкторы в 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!

15
задан Stedy 22 November 2011 в 18:28
поделиться