PHPでコンストラクターがどのように機能するかについて少し混乱しています。
新しいオブジェクトをインスタンス化するときに呼び出されるコンストラクターを持つクラスがあります。
$foo = new Foo($args);
__construct($params)
クラスで呼び出され、Foo
適切な初期化コードを実行します。
ただし、クラスを使用して静的関数を呼び出すと、コンストラクターが再度呼び出されます。
$bar = Foo::some_function(); //runs the constructor from Foo
これにより、コンストラクターが実行され、新しいFoo
オブジェクトを作成するときにのみ意図したオブジェクト初期化コードが実行されます。
コンストラクターがどのように機能するかという点が欠けていますか?または__construct()
、クラスを使用して静的関数呼び出しを行うときに実行されないようにする方法はありますか?
オブジェクトの初期化を行う代わりに、「factory」関数を使用する必要がありますか?もしそうなら、コンストラクターのポイントは何ですか?
::編集::ユーザーが写真をアルバムにアップロードできるフォーム(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のコンストラクターが実行されます。