这个项目没有维护
Doctrine 2 REST服务器和客户端
Doctrine 2 REST服务器和客户端组件既是为Doctrine 2实体启用REST服务的简单方法,也是通过类似于Ruby on Rails中的ActiveResource的ActiveRecord样式实现来使用REST服务的一种方式!
介绍
基本概念很简单,你有一个REST服务(http://api.people.com/person),你想通过一个简单的ActiveRecord样式界面与它进行交互。
首先,我们可以检索一个人:
$person = Person::find(1); // GET http://api.people.com/person/1.xml
现在我们可以改变该人的一些属性:
$person->setName('Jonathan H. Wage');
一旦我们完成,我们可以简单地保存它,并进行适当的REST调用:
$person->save(); // POST http://api.people.com/person/1.xml (name=Jonathan H. Wage)
客户端
REST客户端是用于处理REST服务的ActiveRecord样式实现。 您需要做的就是定义一些映射到Web上某些REST服务的PHP类。 这是我们将Person映射到的示例 http://api.people.com/person :
<?php namespace Entities; use Doctrine\REST\Client\Entity; class Person extends Entity { private $id; private $name; public static function configure(EntityConfiguration $entityConfiguration) { $entityConfiguration->setUrl('http://api.people.com'); $entityConfiguration->setName('person'); } public function getId() { return $this->id; } public function setName($name) { $this->name = $name; } public function getName() { return $this->name; } }
现在,当我们执行某些操作时,它将生成相应的REST请求,执行它,转换响应并将结果保存到PHP对象。
$person = new Person(); $person->setName('Jonathan H. Wage'); $person->save(); // PUT http://api.people.com/person.xml (name=Jonathan H. Wage)
我们现在可以再次找回那个人:
$person = Person::find($person->getId()); // GET http://api.people.com/person/1.xml
或者您可以检索所有Person对象:
$persons = Person::findAll();
服务器
Doctrine 2 REST服务器允许您通过一些REST服务轻松公开您的实体。 这是原始的低级服务器,不包括任何路由或URL解析,因此您需要在具有Symfony或Zend Framework等路由的现有框架中实现。
您需要做的就是创建一个新的REST服务器实例,并将要为其公开实体的EntityManager实例和表示您要处理的服务器请求的数组传递给它:
$request = array( '_method' => 'get', '_format' => 'xml', '_entity' => 'user', '_action' => 'get', '_id' => 1 ); $server = new \Doctrine\REST\Server\Server($em, $request); $server->setEntityAlias('Entities\User', 'user'); $xml = $server->execute();
上面的代码将检索ID为1的用户并返回一个XML文档 如下所示:
<user> <id>1</id> <username>jwage</username> </user>