longitude-one / neo4j-bolt
Neo4j Bolt 二进制协议 PHP 驱动
1.0.2
2020-08-03 13:26 UTC
Requires
- php: >= 7.2
- ext-bcmath: *
- ext-json: *
- ext-mbstring: *
- graphaware/neo4j-common: ^3.4
- myclabs/php-enum: ^1.4
- symfony/event-dispatcher: ^4.4|^5.0
Requires (Dev)
- behat/behat: ^3.6
- phpunit/phpunit: ^8.5
- symfony/stopwatch: ^4.4|^5.0
This package is auto-updated.
Last update: 2024-08-29 05:37:00 UTC
README
Neo4j Bolt PHP 是一个低级别的 PHP 驱动,用于 Neo4j 的 Bolt 通信协议。它最初是由 GraphAware 创建的 仓库。由于它是一个自 2017 年以来未升级的 MIT 库,LongitudeOne 决定分叉并升级它。
参考文献
- PHP 客户端嵌入 Bolt 和 http 驱动(推荐使用 PHP 中的 Neo4j): https://github.com/longitude-one/neo4j-php-client
- Neo4j 3.5: https://neo4j.ac.cn/docs
要求
- PHP7.3+
- Neo4j3.0(推荐使用 3.5)
- PHP Sockets 扩展可用
bcmath
扩展json
扩展mbstring
扩展
此驱动与 Neo4j 4.0 和 4.1 不兼容。
安装
在依赖项中要求该包
composer require longitude-one/neo4j-bolt
设置驱动程序并创建会话
use GraphAware\Bolt\GraphDatabase; $driver = GraphDatabase::driver("bolt://"); $session = $driver->session();
发送 Cypher 语句
$session = $driver->session(); $session->run("CREATE (n)"); $session->close(); // with parameters : $session->run("CREATE (n) SET n += {props}", ['name' => 'Mike', 'age' => 27]);
空数组
由于 PHP 中缺少集合类型,无法区分何时将空数组视为等效的 Java List 或 Map 类型。
因此,您可以围绕数组使用包装器来保证类型安全
use GraphAware\Common\Collections; $query = 'MERGE (n:User {id: {id} }) WITH n UNWIND {friends} AS friend MERGE (f:User {id: friend.name}) MERGE (f)-[:KNOWS]->(n)'; $params = ['id' => 'me', 'friends' => Collections::asList([])]; $this->getSession()->run($query, $params); // Or $query = 'MERGE (n:User {id: {id} }) WITH n UNWIND {friends}.users AS friend MERGE (f:User {id: friend.name}) MERGE (f)-[:KNOWS]->(n)'; $params = ['id' => 'me', 'friends' => Collections::asMap([])]; $this->getSession()->run($query, $params);
TLS 加密
为了启用 TLS 支持,您需要将配置选项设置为 REQUIRED
,以下是一个示例
$config = \GraphAware\Bolt\Configuration::newInstance() ->withCredentials('bolttest', 'L7n7SfTSj0e6U') ->withTLSMode(\GraphAware\Bolt\Configuration::TLSMODE_REQUIRED); $driver = \GraphAware\Bolt\GraphDatabase::driver('bolt://hobomjfhocgbkeenl.dbs.graphenedb.com:24786', $config); $session = $driver->session();
许可
版权所有 © 2020 LongitudeOne 版权所有 © 2015-2016 GraphAware Ltd
特此授予任何获得此软件及其相关文档副本(以下简称“软件”)的人免费使用软件的权利,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本的权利,以及允许向软件提供者提供软件的人这样做,前提是遵守以下条件
上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。
软件按“现状”提供,不提供任何明示或暗示的保证,包括但不限于对适销性、针对特定目的的适用性和非侵权的保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论该责任源于合同、侵权或其他方式,也不论该责任是否与软件或软件的使用或其他方式有关。