brightzone/rexpro-php

该软件包最新版本(dev-master)没有可用的许可信息。

PHP的rexpro客户端

dev-master 2015-09-05 19:19 UTC

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环境中。