也许是一个简单的问题,但对我来说作为 Neo4j 的初学者来说是一个障碍。我在与我的应用程序相同的目录中安装了带有 composer 的 neo4jphp。Vendor-Subfolder 已创建,下面的everyman/neo4j 文件夹可用。对于第一个测试,我使用了示例中的代码片段:
spl_autoload_register(function ($className) {
$libPath = 'vendor\\';
$classFile = $className.'.php';
$classPath = $libPath.$classFile;
if (file_exists($classPath)) {
require($classPath);
}
});
require('vendor/autoload.php');
use everyman\Neo4j\Client,
everyman\Neo4j\Transport;
$client = new Client(new Transport('localhost', 7474));
print_r($client->getServerInfo());
我总是偶然发现错误
致命错误:无法实例化抽象类 Everyman\Neo4j\Transport
谷歌搜索让我看到了 Josh Adell 的评论,他说
您不能实例化 Everyman\Neo4j\Transport,因为它是一个抽象类。您必须根据需要实例化 Everyman\Neo4j\Transport\Curl 或 Everyman\Neo4j\Transport\Stream
所以我想我只需要将使用语句更改为
use everyman\Neo4j\Client,
everyman\Neo4j\Transport\Curl;
但这不起作用,调试显示,自动加载器只得到“Transport.php”而不是“everyman\Neo4j\Transport\Curl.php”。对于“Client.php”它仍然有效(“vendor\everyman\Neo4j\Client.php”)所以我猜测使用语句是错误的或者代码无法处理额外的子文件夹结构。
使用
要求('phar://neo4jphp.phar');
工作正常,但我读到这已被弃用,应该由作曲家/自动加载取代。
任何人都暗示要改变什么或有同样的问题?
谢谢你的时间,巴莱尔