2010-04-07 92 views
2

我正在研究一個PHP的Web應用程序,我試圖使用MVC模型。我有很多「數據庫實體」存在的東西 - 一行或一組相關的行,它們在概念上是人類可識別的「事物」。所以我經常嘗試在模型類中爲該事物提供一個接口。在MVC中建模數據庫實體 - 如何創建它們?

所以當然,磨機功能的運行是要有一個現有的實體,從中獲取一些數據,有時更新它。但是,在遇到問題時,我需要創建一個新的實體。現有實體的默認數據都不存在!

例如,我__construct()方法往往有爭論(即$idWHERE id = $id),這樣我可以從數據庫中的數據並填充從數據對象的所有屬性。但是,當我想創建一個新實體時,這些參數的值還不存在!

你們如何處理這種情況?你

  • 嘗試同時爲創建和後續操作在同一個對象
  • 有另一個類只是用於生成實體
  • 避免__construct和具有財產以後像create()新實體和instantiate()現有提供的功能其他
  • 其他?

回答

2

如果您需要能夠創建「新」對象,那麼我認爲您的構造函數不應該從數據庫默認加載。由於PHP不支持函數重載(因此您不能重載構造函數),您可以將構造函數中的「從數據庫填充」代碼移除到函數中,或者將$id-類型參數設置爲默認值值,指示性不應該被從數據庫中填充:

function __construct($id = 0) 
{ 
    if ($id == 0) 
     // create with blank properties 
    else 
     // load from database 
} 

然後,如果你想有一個新的對象,你只是不帶參數調用它,如果你想從數據庫中加載,你包括ID參數。

相關問題