doctrine/orientdb-odm

此包已被废弃,不再维护。未建议替代包。

PHP OrientDB 对象文档映射器 (ODM) 为 PHP 对象提供透明持久化到 OrientDB。

1.0.0-beta7 2013-12-27 00:32 UTC

README

Build Status Total Downloads Latest Stable Version

什么是 Orient?

一套使用和管理任何 OrientDB 实例的 PHP 工具。

Orient 包含

  • HTTP 协议绑定
  • 查询构建器
  • 数据映射器(对象图映射器)

如果您不了解 OrientDB,请查看其 文档

克隆后

为了能够运行 Orient 提供的示例和测试套件,您必须首先进入克隆仓库的根目录,并使用 Composer 初始化所有所需的依赖项。我们在 bin/ 子目录中提供了一个实用脚本以简化此过程,因此您可以执行以下操作

$ ./bin/initialize-dependencies.sh

绑定的当前状态

绑定已完成:它是一个具有一些绑定到 OrientDB HTTP 接口的方法的 HTTP 客户端包装器。

其使用简单

$parameters = Doctrine\OrientDB\Binding\BindingParameters::create('http://admin:admin@127.0.0.1:2480/demo');
$orient = new Doctrine\OrientDB\Binding\HttpBinding($parameters);
$output = $orient->query("SELECT FROM Address");

foreach ($output->getResult() as $address) {
    var_dump($address->street);
}

使用 PHP5.3 标准自动加载器 (https://gist.github.com/221634)。

查询构建器的当前状态

查询构建器已完成,未来我们将考虑与 OrientDB 图版集成: http://code.google.com/p/orient/wiki/GraphEdTutorial

要利用 QB,只需实例化一个 Query 对象

use Doctrine\OrientDB\Query\Query;

$query = new Query();
$query->from(array('users'))->where('username = ?', "admin");

echo $query->getRaw();      // SELECT FROM users WHERE username = "admin"

Query 对象封装了众多子命令,如 SELECT、DROP、GRANT、INSERT 等...

您也可以使用这些命令

use Doctrine\OrientDB\Query\Command\Select;

$select = new Select(array('users'));
echo $select->getRaw();     // SELECT FROM users

然而,我们强烈反对这种做法:命令会更改,而 Query 作为门面,希望不会更改。

您最好查看 Query 类及其子命令的测试,以获取可用命令的全面概述:为了匹配 OrientDB 原生 SQL 样式语法,我们试图保留名称等,但到目前为止已经更改了一些内容。

映射器的当前状态

我们已经开始对映射器的工作,目前它能够将 OrientDB 响应(转换为 StdObject)映射到注解映射的 POPO。此外,集合被正确地填充。

然而,它仍在进行大量工作,因此不要期待在几周内能够使用它。下一步是

  • 填充 OrientDB 原生数据类型(包括浮点数、嵌入集合|链接|列表、嵌入映射|链接|列表等...)
  • 提供基本存储库类
  • 从 ODM 到 OrientDB 的持久化实现

工具

Orient 包含了一些针对 PHP 开发者的工具:其中之一是 Dijkstra 算法的实现。

use Doctrine\OrientDB\Graph\Graph;
use Doctrine\OrientDB\Graph\Vertex;
use Doctrine\OrientDB\Graph\Algorithm\Dijkstra;

$graph = new Graph();

$rome = new Vertex('Rome');
$paris = new Vertex('Paris');
$london = new Vertex('London');

$rome->connect($paris, 2);
$rome->connect($london, 3);
$paris->connect($london, 1);

$graph->add($rome);
$graph->add($paris);
$graph->add($london);

$algorithm = new Dijkstra($graph);
$algorithm->setStartingVertex($rome);
$algorithm->setEndingVertex($london);

var_dump($algorithm->solve());

测试

可以通过在仓库根目录下执行 phpunit 来启动测试套件。

默认情况下,套件不会执行集成测试以验证我们的实现与运行中的 OrientDB 实例的正确行为。由于集成测试使用了 @group 注解,可以通过在 phpunit.xml 中添加注释来启用 integration 组中的注释,或者如果您只想在单次执行中执行它们,首先使用此脚本加载测试数据:

php ./test/Integration/fixtures/load.php

然后,通过添加额外的 --group 参数启动套件。

phpunit --group __nogroup__,integration

还可以使用 PHP_CodeBrowser 与以下依赖项(除 phpunit 外)生成显示库代码健康的 HTML 报告:

  • phpcpd
  • phpdcd
  • phploc
  • phpmd
  • phpdepend
  • phpcb

从仓库根目录执行 ./bin/report.sh 将在 log/report/index.html 中生成报告。

需求

以下是使用库的需求

  • PHP >= 5.3.3
  • OrientDB >= 1.2.0

要启动测试套件,需要 PHPUnit 3.6。

跟踪器 & 软件生命周期

查看: https://github.com/doctrine/orientdb-odm/issues

进一步文档

如果您想查看漂亮的 PHPDoc 文档,可以使用 doxygen

sudo apt-get install doxygen

然后使用在 docs 目录下提供的脚本

doxygen docs/orient.d

这将生成在 docs/html 目录下的技术文档。