doctrine / orientdb-odm
PHP OrientDB 对象文档映射器 (ODM) 为 PHP 对象提供透明持久化到 OrientDB。
Requires
- php: >=5.3.3
- doctrine/common: >=2.2,<2.4-dev
- guzzle/guzzle: *
- symfony/class-loader: ~2.3
- symfony/finder: ~2.3
Requires (Dev)
- phpunit/phpunit: 3.7.x-dev
This package is not auto-updated.
Last update: 2024-02-17 10:05:54 UTC
README
什么是 Orient?
一套使用和管理任何 OrientDB 实例的 PHP 工具。
Orient 包含
- HTTP 协议绑定
- 查询构建器
- 数据映射器(对象图映射器)
克隆后
为了能够运行 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 目录下的技术文档。