我在谷歌上搜索了一个小时,但也许我的google fu太弱了,我找不到解决方案。
我想创建一个通过json请求查询服务的应用程序(所有数据和后端/业务逻辑都存储在服务中)。使用普通的php就足够简单了,因为我只是发出一个curl请求,json_解码结果并得到我需要的。这已经很有效了。
请求可能如下所示:
使用body调用http://service-host/userlist
:
{"logintoken": "123456-1234-5678-901234"}
得到结果:
{
"status": "Ok",
"userlist":[
{"name": "foo", "id": 1},
{"name": "bar", "id": 2}
]
}
现在我们想把它放到zend框架中,因为它是一个爱好项目,我们想了解zend。问题是我能找到的所有信息都使用数据库。
有没有办法创建一个不使用数据库的zend项目?我如何编写一个模型来表示动作而不是对象和对象关系?
最佳答案
看看Zend_Json
和Zend_Http
(或者使用普通卷曲)。
至于您的模型,数据源是数据库还是webservice应该没有区别。只有一个类知道如何查询数据源。像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 {}
换句话说,只需创建适当的类,就可以传递给用户程序,例如
$users = new UserGateway(new UserWebService);
$users->findById(123);
在网关和/或数据源类中,具体如何找到用户是一个实现细节。
您可能还对Zend_Rest_Client和
Building RESTful Services with Zend Framework
Getting started with REST using Zend Framework
RESTful Web Services with Zend Framework