我對PHP中的構造函數如何工作有點困惑。PHP的構造函數和靜態函數
我有一個構造函數,當我實例化一個新的對象時被調用的類。
$foo = new Foo($args);
__construct($params)
是所謂的類Foo
並執行相應的初始化代碼。
但是,當我使用該類來調用一個靜態函數時,再次調用該構造函數。
$bar = Foo::some_function(); //runs the constructor from Foo
這將導致構造函數執行,運行,我只打算當我創建一個新的Foo
對象的對象初始化代碼。
我錯過了構造函數的工作原理嗎?或者當我使用該類進行靜態函數調用時,有沒有辦法阻止__construct()
執行?
我應該用「工廠」函數來做對象初始化嗎?如果是這樣,那麼構造函數的重點是什麼?
::編輯:: 我有一個表格,用戶可以上傳照片到相冊(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的構造函數運行!
這是不對的。請提供構造函數被靜態調用調用的完整代碼! – mAu
顯示您的真實代碼。你寫的東西看起來不正確。 –
構造函數的外觀如何,您認爲它運行的是什麼行爲? – markus