christianascone/php-orientdb-http

一套PHP库,用于通过HTTP协议从PHP使用OrientDB。

0.6.2 2017-10-31 16:36 UTC

README

Build Status Total Downloads Latest Stable Version

本项目源于doctrine/orientdb-odm项目。

什么是OrientDB?

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

Orient包括

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

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

克隆后

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

$ ./bin/initialize-dependencies.sh

绑定的当前状态

绑定已完整:它是一个HTTP客户端包装器,其中一些方法绑定到OrientDB的HTTP接口。

其使用很简单

$parameters = christianascone\OrientDB\Binding\BindingParameters::create('http://admin:admin@127.0.0.1:2480/demo');
$orient = new christianascone\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 Graph Edition:http://code.google.com/p/orient/wiki/GraphEdTutorial

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

use christianascone\OrientDB\Query\Query;

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

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

查询对象包含许多子命令,如SELECT、DROP、GRANT、INSERT等...

您也可以使用这些命令

use christianascone\OrientDB\Query\Command\Select;

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

然而,我们强烈建议不要采用这种方法:命令将更改,而查询(作为一个外观)-希望-不会。

您最好查看查询类及其子命令的测试,以全面了解可用的命令:为了匹配OrientDB的类似SQL的语法,我们试图保留名称和其他类似的内容,但到目前为止,已经有几件事情发生了变化。

映射器的当前状态

我们开始着手工作,目前它能够将OrientDB响应(转换为StdObject)映射到注解映射的POPO。此外,集合也得到了适当的填充。

然而,它正在经历大量的工作,所以不要期望在几周内能够使用它。下一步是

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

实用工具

Orient还包含一些针对PHP开发者的实用工具:其中之一是迪杰斯特拉算法的实现。

use christianascone\OrientDB\Graph\Graph;
use christianascone\OrientDB\Graph\Vertex;
use christianascone\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注解标记,因此可以通过在排除组的列表中添加对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/christianascone/php-orientdb-HTTP/issues

更多文档

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

sudo apt-get install doxygen

然后使用位于docs目录下的脚本

doxygen docs/orient.d

该脚本将在docs/html文件夹下生成技术文档。