2010-05-13 129 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附带的表接口类。学说也做数据库抽象,但你可以用你喜欢的任何东西替代它。它不一定是数据库的东西。