juststeveking/neo4j-http-adapter

一个符合PSR标准的精简HTTP客户端

v1.0 2020-05-28 14:13 UTC

This package is auto-updated.

Last update: 2024-09-19 22:40:27 UTC


README

Latest Version on Packagist run-tests Quality Score Total Downloads

此包仍在开发中,到目前为止我已测试的功能正常,但尚未用于生产环境。

此包的目的是提供一个干净且简单的方式,以便与neo4j HTTP API v4协同工作,运行Cypher查询并返回数据。

安装

使用composer

$ composer require juststeveking/neo4j-http-adapter

然后您可以根据需要在自己的项目中使用它。

使用方法

使用这个库相对简单。

准备您的适配器

适配器构建方法接受两个参数:您的neo4j数据库的连接字符串和一个可能为null的数据库名。

请注意,如果您的连接字符串不是以httphttps开头,将会抛出异常。

<?php

use JustSteveKing\Graph\Connection\Adapters\Neo4j\Adapters\Http\HttpAdapter;

$adapter = HttpAdapter::build(
    'http://neo4j:password@localhost:7474',
    'my_database'
);

选择要查询的数据库

<?php

use JustSteveKing\Graph\Connection\Adapters\Neo4j\Adapters\Http\HttpAdapter;

$adapter = HttpAdapter::build(
    'http://neo4j:password@localhost:7474',
    'my_database'
);

$database = $adapter->on('database-name');

开始构建事务

一旦您有一个活跃的适配器并选择了您的数据库,您将想要开始对其运行查询。

<?php

use JustSteveKing\Graph\Connection\Adapters\Neo4j\Adapters\Http\HttpAdapter;

$adapter = HttpAdapter::build(
    'http://neo4j:password@localhost:7474',
    'my_database'
);

$database = $adapter->on('database-name');

// Add a query to the transaction pipeline.
$database->query('MATCH (person:Person) WHERE person.name = "Tom Hanks" RETURN person');

// Add another query to the transaction pipeline
$database->query('MATCH (film:Film) WHERE film.name = "Forrest Gump" RETURN film');

从这里我们可以自由地将此事务发送到服务器

use JustSteveKing\Graph\Connection\Adapters\Neo4j\Adapters\Http\HttpAdapter;

$adapter = HttpAdapter::build(
    'http://neo4j:password@localhost:7474',
    'my_database'
);

$database = $adapter->on('database-name');

// Add a query to the transaction pipeline.
$database->query('MATCH (person:Person) WHERE person.name = "Tom Hanks" RETURN person');

$response = $database->send();

更简洁的方法

此包的目的是允许您根据您的意愿构建查询并发送它们,而不是如何处理它们。以下是发送查询的另一种方法

<?php

use JustSteveKing\Graph\Connection\Adapters\Neo4j\Adapters\Http\HttpAdapter;

$adapter = HttpAdapter::build(
    'http://neo4j:password@localhost:7474',
    null
);

$actorsDatabase = $adapter->on('actors');

$tomHanks = $actorsDatabase->query('MATCH (person:Person) WHERE person.name = "Tom Hanks" RETURN person')->send();

或者如果您更喜欢链式处理过程

<?php

use JustSteveKing\Graph\Connection\Adapters\Neo4j\Adapters\Http\HttpAdapter;

$tomHanks = HttpsAdapter::build(
    'http://neo4j:password@localhost:7474',
    'actors'
)->query('MATCH (person:Person) WHERE person.name = "Tom Hanks" RETURN person')->send();

如果您还想使用我的其他包,可以像以下这样查询

<?php

use JustSteveKing\Graph\Builder\Cypher;
use JustSteveKing\Graph\Connection\ConnectionManager;
use JustSteveKing\Graph\Connection\Adapters\Neo4j\Adapters\Http\HttpAdapter;

$connection = ConnectionManager::create(HttpAdapter::build('http://neo4j:password@localhost:7474', null));
$query = Cypher::query()->match('Person', 'person')->where('person', 'name', '=', 'Tom Hanks')->return('person');
$connection->use('neo-http')->on('neo4j')->query($query)->send();

测试

有一个composer脚本来运行测试

$ composer run test

然而,如果您无法运行此脚本,请使用以下命令

$ ./vendor/bin/phpunit --testdox

安全性

如果您发现任何安全相关的问题,请通过电子邮件juststevemcd@gmail.com而不是使用问题跟踪器。