2010-05-13 165 views
3

我google了一個小時,但也許我的Google-Fu太弱了,我找不到解決方案。沒有數據庫的Zend

我想創建一個通過JSON請求(所有數據和後端/業務邏輯存儲在服務中)查詢服務的應用程序。使用普通的PHP它很簡單,因爲我只是做了一個curl請求,json_decode結果並得到我所需要的。這已經很好了。

的請求可能是這樣的:

呼叫http://service-host/userlist與身體:

{"logintoken": "123456-1234-5678-9"} 

獲取結果:

{ 
    "status": "Ok", 
    "userlist":[ 
    {"name": "foo", "id": 1}, 
    {"name": "bar", "id": 2} 
    ] 
} 

現在我們想的是到了Zend框架,因爲它是一個愛好項目,我們想了解Zend。問題是我可以找到的所有信息都使用數據庫。

是否有創建不使用數據庫的Zend項目的方法?我該如何編寫一個代表對象和對象關係的動作模型?

回答

5

看看Zend_JsonZend_Http(或者只是使用普通cURL)。

至於你的模型,數據源是數據庫還是web服務應該沒有區別。只需要一個知道如何查詢數據源的類。是否執行諸如getUserById之類的查詢數據庫或web服務並不重要,例如,

class UserGateway 
{ 
    protected $_dataSource; 
    public function __construct($dataSource) 
    { 
     $this->_dataSource = $dataSource; 
    } 
    public function getUserById($id) 
    { 
     // interact with datasource instance to retrieve a user by ID 
    } 
} 

,然後$dataSource類似

class UserDb extends Zend_Db_Table {} 

或類似

class UserWebService extends Zend_Http_Client {} 

換句話說,只需要建立適當的類,你可以通到UserGateway,例如

$users = new UserGateway(new UserWebService); 
$users->findById(123); 

,準確,你是怎麼找到的用戶則是在網關和/或數據源類的實現細節。

您可能也有興趣Zend_Rest_Client

+0

感謝您的回覆,但這些鏈接並沒有真正幫助太多(除了Zend_Http可能會有所幫助),因爲他們談到了使用Zend構建REST服務器,但我想從Zend訪問類似REST的服務。仍然感謝您的努力。 – dbemerlin 2010-05-13 14:16:35

+0

Zend_Http真棒。這聽起來像你已經有來自另一個網站的服務部分,你只是想提出反對的請求。如果是這種情況,忽略Zend_Rest_Client。 – Ballsacian1 2010-05-13 14:18:20

+0

關於Zend_Rest_Client的好處是,如果您要連接的服務遵循適當的原則,理論上Zend_Rest_Client應該以良好的方式處理服務調用。 – Ballsacian1 2010-05-13 14:20:03

1

從Zend Framework使用MVC架構(模型 - 視圖 - 控制器)的層容易互換。只需編寫一些抽象數據源並將其用作模型的類。

例如,我喜歡在我的項目中使用Doctrine作爲模型層,而不是ZF附帶的表接口類。學說也做數據庫抽象,但你可以用你喜歡的任何東西替代它。它不一定是數據庫的東西。