2011-05-31 44 views
3

在Kohana 3.1.x框架中。內部數據發佈[Kohana 3.1]

什麼都像這樣

$post = Request::factory('module/data') 
     ->method(Request::POST) 
     ->post(array('some' => 'random data')) 
     ->execute() 
     ->response; 

內部請求發送數據時,如果你可以簡單地將數據發送這樣

Module::instance()->data(array('some' => 'random data')); 

在這個例子中Module的好處是隨機模塊和data一些隨機方法。

我會通過ajax和內部請求調用這個Module。我正計劃設計RESTful API。

的問題是:爲什麼要使用HMVC而不只是直接使用一個內部類API

回答

1

,因爲他們是內部請求,有正在取得沒有額外的HTTP請求。

您可能想看看Request_Client_Internal並將其與Request_Client_External進行比較。之後,你應該感到開明:)

編輯:

你應該知道,AJAX請求不是唯一的「外部HTTP請求」。 cURL,PECL HTTP,file_get_contents()和其他PHP函數也會發送一個外部HTTP請求(你應該閱讀RFC 2616以瞭解HTTP實際工作原理)。

+0

是不是我的例子_internal requests_沒有額外的HTTP請求?當然通過Ajax會有額外的HTTP請求。 – kaulusp 2011-05-31 09:07:12

+0

和Module :: instance()是...什麼? – Kemo 2011-05-31 10:36:55

0

對於HMVC調用,您可以對Ajax和內部請求使用相同的控制器。此外,它可以處理標準(非Ajax)http請求,例如表單提交。一體化解決方案,單一入口點。

如果你不想HMVC調用,你將需要一個調用內部請求(在基本控制器的某個地方)和另一個 - 在一個特殊的Ajax控制器。此外,您可能會遇到數據呈現問題(通常HMVC和ajax調用使用不同的模板)。它不是乾的。

+0

不是'Module :: instance() - > data(array(...));'也是內部請求? – kaulusp 2011-05-31 10:09:14

0

我會評論上述,什麼biakaveron說,但我還不能,所以我把它作爲一個答案。 @stacknoob:你可以使用Module::instance()->data(array(...))作爲控制器的動作嗎?你可以 - 用一些額外的代碼。 相反,什麼biakaveron已經說過,你可以保持你的代碼邏輯,並採取行動返回相同的結果爲AJAX HMVC請求。在一個地方。 DRY + KISS。

+0

這是一個很好的補充!謝謝!我終於明白了差異。另外我想指出,使用HMVC時會有開銷。 – kaulusp 2011-05-31 20:37:29

+0

也許這個鏈接有幫助 - http://techportal.ibuildings.com/2010/02/22/scaling-web-applications-with-hmvc/ – biakaveron 2011-06-01 05:34:43

+0

是的,這是一篇非常好的文章! – kaulusp 2011-06-01 07:05:42