也许是一个简单的问题,但对我来说,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-statements改为
use everyman\Neo4j\Client,
everyman\Neo4j\Transport\Curl;
但这不起作用,调试显示,自动加载器只能获得" Transport.php"而不是" everyman \ Neo4j \ Transport \ Curl.php"。对于" Client.php"它仍在工作("供应商\ everyman \ Neo4j \ Client.php")所以我猜测use-statement是错误的或代码无法处理额外的子文件夹结构。
使用
需要('药业://neo4jphp.phar');
工作正常,但我读到这已被弃用,应该由composer / autoload取代。
任何人都有提示要改变什么或遇到同样的问题?
谢谢你的时间, Balael
答案 0 :(得分:1)
Curl是默认传输。如果要使用Stream而不是Curl,则只需要实例化自己的Transport对象。如果您真的想要实例化自己的Curl Transport,那么对现有代码的最简单修改就是将use语句修改为:
use everyman\Neo4j\Client,
everyman\Neo4j\Transport\Curl as Transport;
此外,如果您使用的是Composer软件包,则无需注册自己的自动加载功能。 vendor/autoload.php
为你做到了。
答案 1 :(得分:1)
谢谢Josh,我正在尝试,但似乎我仍然卡在某处。我使用默认的CURL很好 - 所以我把代码缩小到
require('vendor/autoload.php');
use everyman\Neo4j\Client;
$client = new Everyman\Neo4j\Client('localhost', 7474);
print_r($client->getServerInfo());`
文件夹结构是主要的(这里是文件和带有内容的composer.json
{
"require": {
"everyman/Neo4j": "dev-master"
}
}
并在子文件夹"供应商"我们有" autoload.php"和子文件夹中的每个人都有相关的内容。当我运行文件时,我出来了
Fatal error: Class 'Everyman\Neo4j\Client' not found
当我有自动加载功能时不会发生这种情况。我想我在某处犯了一个错误 - 你能给我一个提示吗? 非常感谢,B
答案 2 :(得分:0)
嗯......我只是在尝试,似乎在use-statement和类实例化中不需要Transport CLASS。这似乎有效:
require('vendor/autoload.php');
use everyman\Neo4j\Client;
$client = new Client();
print_r($client->getServerInfo());
也适用于拥有专用服务器/端口:
$client = new Everyman\Neo4j\Client('localhost', 7474);
如果您有更多的意见,我会很乐意了解更多信息 - 谢谢,所有输入和输入我非常感激。
Balael