2011-07-25 79 views
1

問題:我所需要知道的是,我應該怎麼去整合不同的數據庫(MongoDB中)到ATK4? 具體做法是:敏捷工具包4,實施不同的數據庫(MongoDB的)

  1. 如果我只是創建與數據庫的連接,並在每一個模型中的污物,還是應該我抽象成一個圖書館嗎?
  2. 如果我將它抽象成一個模型,我該如何從模型內部調用這些方法?

一些注意事項:

    在.NET
  1. ,答案顯然是抽象的,我已經使用蒙戈和asp.net的MVC我的項目做,但我是一個總的小白當涉及到PHP,所以我不確定公約是什麼。
  2. 代碼點火器使得它真正容易加載庫,我想知道如果ATK4是一樣嗎?
  3. 我已閱讀了所有文檔,並在測試文檔中瀏覽了該教程。

約我有些事情:我在PHP中的總小白。我的主要編碼框架是.NET(VB都& C#(WinForms和ASP(既WebForms和MVC)))

我一直在使用CodeIgniter和喜歡它了很多玩耍。我的一位同事要求我檢查一下ATK4,我必須說我對迄今爲止看到的東西印象深刻。

但是,如果我要採取ATK4爲我的項目,我需要能夠使用MongoDB的。讓我清楚地說明一下:我並沒有要求任何人爲我編寫代碼。我只需要一些關於php和atk4約定的指導。網站上關於這些事情的文檔目前有點稀疏(不存在)。

回答

0

你有兩個選擇,無論是抽象的。首先涉及創建網格和其他視圖可以自動識別的模型和控制器。第二,你需要從MongoDB獲取數據並插入到一個靜態表中。

蒙戈感知瀏覽

這種方法要求你知道模型是如何運作的。特別是你需要了解MVCGrid,setController,setModel以及mvc/Controller.php。然後你需要創建你自己的控制器。然後,您需要使用您的控制器的AbstractView :: setModel()的副本,該控制器將正確知道如何從MongoDB獲取數據。

而且你可能需要延長網格(或MVCGrid)正常流數據。

一旦你完成這件事,你可以這樣做:

$形式 - > setMongoModel( '爲MyModel') - > loadData(123);

(如果使用的是GIT版本,你其實可以注射這種方法: https://github.com/atk4/atk4-testsuite/blob/master/page/core.php#L108

半自動化的方法

在這種方法中,你將需要從MongoDB中加載數據控制自己,將其送入網格或窗體,網格和窗體都可以使用靜態數據,在這種情況下,您需要如下所示:

$c=$this->add('MongoController'); 
$data=$c->load($my_model,123); 
$grid->setStaticSource($data); 

回答您的其他questinos

代碼點火器是很好的框架,但它在全球範圍實例化對象。這不太可能需要同一個庫的2個實例。敏捷工具包允許和控制器經常以這種方式使用。因此,您幾乎負責CI中的數據管理,而在ATK4對象中彼此綁定。這是這些圖書館方法之間的核心區別。

圖書館CI:

$this->load->library('MyLib'); 

在ATK4應該是這樣的:

$this->api->add('MyLib'); 

這是常見的做法是將

$this->owner->mylib=$this; 

你的庫裏面,所以它給你更容易訪問它們。

如果不知道PHP開發是如何發生的,它可能會更好,但在大多數情況下,它非常依賴於HTML模板。