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..);
フォトコンストラクタが写真を作成して保存します。しかし、view_photo.phpで、私が電話すると:
$photo = Photo::find_by_id($_POST['id']) //user-defined function to query database
これは、写真のコンストラクタを実行させています!
これは正しいものではありません。静的呼び出しによってコンストラクタが呼び出される完全なコードを提供してください! – mAu
実際のコードを表示してください。あなたが書いているものが正しいとは思わない。 –
コンストラクタはどのように見えますか、どの動作から実行すると結論付けていますか? – markus