christianascone / php-orientdb-http
一套PHP库,用于通过HTTP协议从PHP使用OrientDB。
Requires
- php: >=5.3.3
- doctrine/common: ~2.2
- guzzle/guzzle: *
- symfony/class-loader: ~2.3|~3.0
- symfony/finder: ~2.3|~3.0
Requires (Dev)
- phpunit/phpunit: ~5.4
README
本项目源于doctrine/orientdb-odm项目。
什么是OrientDB?
一套用于从PHP使用和管理任何OrientDB实例的工具。
Orient包括
- HTTP协议绑定
- 查询构建器
- 数据映射器(对象图映射器)
克隆后
为了能够运行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文件夹下生成技术文档。