Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Class neo4jphp:无法实例化抽象类Everyman\Neo4j\Transport_Class_Neo4j_Autoload_Neo4jphp - Fatal编程技术网

Class neo4jphp:无法实例化抽象类Everyman\Neo4j\Transport

Class neo4jphp:无法实例化抽象类Everyman\Neo4j\Transport,class,neo4j,autoload,neo4jphp,Class,Neo4j,Autoload,Neo4jphp,也许是一个简单的问题,但对我来说,作为Neo4j的首发选手,这是一个障碍。我将neo4jphp with composer安装在与我的应用程序相同的目录中。供应商子文件夹已创建,下面的everyman/neo4j文件夹可用。对于第一个测试,我使用了以下示例中的代码片段: spl_autoload_register(function ($className) { $libPath = 'vendor\\'; $classFile = $className.'.php'; $cla

也许是一个简单的问题,但对我来说,作为Neo4j的首发选手,这是一个障碍。我将neo4jphp with composer安装在与我的应用程序相同的目录中。供应商子文件夹已创建,下面的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

谷歌给我带来了乔什·阿德尔的评论

您不能实例化Everyman\Neo4j\Transport,因为它是一个抽象类。您必须根据需要实例化Everyman\Neo4j\Transport\Curl或Everyman\Neo4j\Transport\Stream

所以我想我只需要将use语句修改为

use everyman\Neo4j\Client,
    everyman\Neo4j\Transport\Curl;
但调试表明,这不起作用,自动加载器只能得到“Transport.php”而不是“everyman\Neo4j\Transport\Curl.php”。对于“Client.php”,它仍在工作(“vendor\everyman\Neo4j\Client.php”),因此我猜测use语句是错误的,或者代码无法处理额外的子文件夹结构

使用

要求('phar://neo4jphp.phar');

作品不错,但我读到这是不赞成的,应该由作曲家/自动加载取代

任何人都有改变的暗示,或者有相同的问题

谢谢你抽出时间,
巴拉尔。。。我只是尝试一下,似乎在use语句和类实例化中不需要Transport类。这似乎有效:

require('vendor/autoload.php'); 

    use everyman\Neo4j\Client;

$client = new Client();
print_r($client->getServerInfo()); 
也适用于具有专用服务器/端口:

$client = new Everyman\Neo4j\Client('localhost', 7474);
如果您有更多的意见,我将很高兴了解更多-谢谢,所有的意见和想法都非常感谢


Balael

Curl是默认传输。如果希望使用Stream而不是Curl,则只需实例化自己的传输对象。如果您确实想实例化自己的Curl传输,那么对现有代码最简单的更改就是将use语句修改为:

use everyman\Neo4j\Client,
    everyman\Neo4j\Transport\Curl as Transport;

此外,如果您使用的是Composer软件包,则无需注册自己的自动加载功能
vendor/autoload.php
可以帮你做到这一点。

谢谢Josh,我试过了,但似乎我还是被困在了某个地方。我可以使用默认的卷曲,因此我将代码缩减为

require('vendor/autoload.php'); 
   use everyman\Neo4j\Client;
    $client = new Everyman\Neo4j\Client('localhost', 7474);
    print_r($client->getServerInfo());` 
文件夹结构是main(以下是文件和composer.json及其内容)

{
   "require": {
      "everyman/Neo4j": "dev-master"
    }
}
在子文件夹“vendor”中有“autoload.php”和子文件夹everyman以及相关内容

Fatal error: Class 'Everyman\Neo4j\Client' not found 
当我有自动加载功能时不会发生这种情况。我想我在这里犯了一个错误-你能给我一个提示吗?
非常感谢,B

啊,似乎我的作曲设置不正确,我已经重新设置了,现在工作正常。