graphaware/neo4j-bolt
A PHP library for communicating with Neo4j over the Bolt protocol, providing a low-level client for sending Cypher queries and handling results in PHP applications. It underpins GraphAware's Neo4j PHP integrations and supports efficient binary communication with Neo4j servers.
graphaware/neo4j-bolt is a low-level PHP client speaking Neo4j’s Bolt binary protocol — not a Laravel-native graph abstraction. It ships no service provider, facade, config, or Eloquent coupling, so the TPM should treat it as a protocol primitive that must sit behind an explicit repository/adapter boundary. It fits only legacy PHP services already pinned to Neo4j 3.x-era Bolt, not a modern Laravel domain layer.composer require may need --ignore-platform-reqs, which is a stopgap, not a fix. Bolt is versioned, so server/protocol drift can cause hard failures. Authentication, TLS, transactions, connection pooling, and error semantics all require independent validation. The static GraphDatabase::createDriver() factory opens a socket immediately and resists clean test seams until wrapped.Neo4jClient interface from day one? What is the funded exit date and owner for migrating to a maintained client (laudis/neo4j-php-client) or Neo4j’s HTTP API? What is the security and vendor-review posture for shipping an archived dependency into revenue-critical paths?Neo4jClient contract, implement it with the Bolt driver, map GraphAware\Bolt\Result\Type\Node/Relationship/Path objects into DTOs, and keep hand-written Cypher inside repository classes. Never let Bolt types, sessions, or Cypher strings leak into controllers, jobs, Blade views, or domain code. Use scoped() rather than singleton() when binding the driver so Octane and queue workers don’t inherit stale sockets.$session->transaction() may be absent in early 1.x pins, which means no client-side transaction control), and any PHP extension requirements. Add a CI matrix spanning supported PHP, Laravel, and Neo4j (e.g. neo4j:3.5) versions so you test against the Bolt protocol you actually ship. Do not claim compatibility without integration tests.Cache::remember for hot traversals. 5) Add write paths in queued jobs with explicit transaction tests. 6) Publish an operational runbook. 7) Fund and schedule the replacement. Gate the project hard if protocol or PHP compatibility fails — that is a stop signal, not a backlog item.finally { $session->close(); }, unbounded result sets from unparameterized lookups, ProtocolException from unsupported parameter types (DateTime, enums, Eloquent models), PHP fatal incompatibilities, and duplicate writes from naive retries. Mitigate with health checks, timeouts, circuit breakers, structured logs, query-level metrics, and strict {name} parameterization to prevent Cypher injection.GraphDatabase, Driver, Session, Result, Record), but the team still needs Neo4j, Cypher, Bolt, transaction, and graph-modeling expertise plus awareness of the {name} placeholder syntax that differs from the maintained successor. Expect moderate ramp-up for PHP developers, higher operational risk for SRE, and cross-training debt if only one engineer knows the driver. Onboarding artifacts — runbooks, contract tests, and the exit plan — should land before the first production write.How can I help you explore Laravel packages today?