brightzone / rexpro-php
该软件包最新版本(dev-master)没有可用的许可信息。
PHP的rexpro客户端
dev-master
2015-09-05 19:19 UTC
Requires (Dev)
This package is not auto-updated.
Last update: 2024-09-14 18:20:28 UTC
README
请注意,当前TinkerPop(TP)的版本是TP3。您可以在此处找到该版本的驱动程序。如果您正在运行TP2项目并希望获取该版本的驱动程序,请继续阅读。
这是一个PHP的rexpro客户端。其主要目的是集成到框架中,因此它将静默失败而不会抛出任何异常。请参阅错误处理部分。
安装
MsgPack(可选)
由于rexpro-php也可以使用JSON进行序列化,因此它不再需要MsgPack。如果您愿意,仍然可以使用它:MsgPack。
从PEAR安装MsgPack
sudo pecl install msgpack-beta
sudo sh -c 'echo "extension=msgpack.so" > /etc/php5/mods-available/msgpack.ini'
sudo php5enmod msgpack
PHP Rexster客户端
对于TP3和此客户端的Gremlin-Server版本,请访问以下链接
https://github.com/PommeVerte/gremlin-php
对于Rexster 2.4+
首选方法是通过composer。将以下内容添加到您的composer.json文件中
{ "repositories": [ { "type": "git", "url": "https://github.com/PommeVerte/rexpro-php.git" } ], "require": { "brightzone/rexpro": "master" } }
如果您只想拉取并使用库,请执行以下操作
git clone https://github.com/PommeVerte/rexpro-php.git cd rexpro-php composer install --no-dev # required to set autoload files
对于Rexster 2.3
首选方法是通过composer。将以下内容添加到您的composer.json文件中
{ "repositories": [ { "type": "git", "url": "https://github.com/PommeVerte/rexpro-php.git" } ], "require": { "brightzone/rexpro": "2.3" } }
如果您只想拉取并使用库,请执行以下操作
git clone https://github.com/PommeVerte/rexpro-php.git -b 2.3 cd rexpro-php composer install --no-dev # required to set autoload files
错误处理
PHP客户端不会抛出异常。它是为了被封装到PHP框架中而构建的,因此它将静默失败(您仍然可以通过检查方法返回值来获取错误)。
例如
if($db->open('localhost:8184','tinkergraph',null,null) === false) throw new Exception($db->error->code . ' : ' . $db->error->description); $db->script = 'g.v(2)'; $result = $db->runScript(); if($result === false) throw new Exception($db->error->code . ' : ' . $db->error->description); //do something with result
命名空间
连接类位于rexpro
命名空间中。这意味着您必须执行以下两种操作之一
require_once 'rexpro-php/src/Connection.php'; use \brightzone\rexpro\Connection; $db = new Connection;
或者
require_once 'rexpro-php/src/Connection.php'; $db = new \brightzone\rexpro\Connection;
序列化器
rexpro-php默认使用pecl msgpack扩展。但如果系统上未安装它,它将自动回退到使用JSON。
如果您想强制使用特定的序列化器类型,您可以这样做
$db = new Connection; echo $db->getSerializer(); // will echo 'MSGPACK' $db->setSerializer(Messages::SERIALIZER_JSON); echo $db->getSerializer(); // will echo 'JSON' // do something with $db Connection Object.
示例
您可以通过阅读wiki中的API获取更多信息。
以下是一些基本用法。
示例1
$db = new Connection; //you can set $db->timeout = 0.5; if you wish $db->open('localhost:8184','tinkergraph',null,null); $db->script = 'g.v(2)'; $result = $db->runScript(); //do something with result $db->close();
示例2(带有绑定)
$db = new Connection; $db->open('localhost:8184','tinkergraph','username','password'); $db->script = 'g.v(CUSTO_BINDING)'; $db->bindValue('CUSTO_BINDING',2); $result = $db->runScript(); //do something with result $db->close();
示例3(无会话)
$db = new Connection; $db->open('localhost:8184'); $db->script = 'g.v(2).map()'; $db->graph = 'tinkergraph'; //need to provide graph $result = $db->runScript(false); //do something with result $b->close();
示例4(事务)
$db = new Connection; $db->open('localhost:8184','neo4jsample',null,null); $db->transactionStart(); $db->script = 'g.addVertex([name:"michael"])'; $result = $db->runScript(); $db->script = 'g.addVertex([name:"john"])'; $result = $db->runScript(); $db->transactionStop(true);//accept commit of changes. set to false if you wish to cancel changes $db->close();
单元测试
如果您的测试rexster服务器使用凭据进行登录,您需要运行以下操作来设置适当的测试凭据
DBUSER=<username> DBPASS=<password> phpunit src/tests/
使用环境变量允许我们在需要时将这些参数传递到CI环境中。