【问题标题】:Namespacing issue? or something else?命名空间问题?或者是其他东西?
【发布时间】:2016-03-31 10:01:32
【问题描述】:

我正在尝试在 php 中实现 Graphaware\neo4j 客户端 neo4j-php-client

我运行 composer 将文件下载到工作目录 .www 并尝试使用

启动客户端
require_once(BASEPATH.'vendor/autoload.php');

use GraphAware\Neo4j\Client\ClientBuilder;

$client = ClientBuilder::create()->addConnection('default', 'http://neo4j:myPassword@localhost:7474')->build();

我收到此错误。

<b>Fatal error</b>:  Class 'GraphAware\Neo4j\Client\ClientBuilder' not found in <b>*path_to_my_www_dir\index.php*</b> on line <b>36</b><br />

为什么我会看到这个?

【问题讨论】:

    标签: php neo4j namespaces graphaware


    【解决方案1】:

    我是 GraphAware Neo4j Client 的维护者。

    我敢打赌,您在阅读存储库的 README 时被打扰了。

    当前的 master 分支包含 4.0@alpha 的代码,所以如果你在命令行中运行 composer require graphaware/neo4j-php-client,很有可能 composer 安装了 3.X 系列中的最后一个稳定版本,因此所需的类不会存在那里。

    我建议你尝试通过运行安装 alpha7 版本的客户端:

    composer require graphaware/neo4j-php-client:^4.0@alpha

    如果您有其他问题,请告诉我

    【讨论】:

    • 我确实尝试安装版本 4。但这就是我遇到的问题。您的要求无法解决为一组可安装的软件包。问题 1 - 在 y 版本中找不到请求的包 graphaware/neo4j-php-client,包名可能有拼写错误。潜在原因: - 包名称中的拼写错误 - 根据您的最低稳定性设置,该包在足够稳定的版本中不可用
    • 好的,然后尝试手动将其添加到您的 composer.json 文件中,例如github.com/graphaware/reco4php/blob/master/composer.json#L16
    • 虽然我有 php 5.6+,但现在我明白了。问题 1 - graphaware/neo4j-php-client 4.0.0-alpha7 需要 php >= 5.6 -> 您的 PHP 版本 (5.5.8) 不满足该要求。 - graphaware/neo4j-php-client 4.0.0-alpha6 需要 php >= 5.6 -> 您的 PHP 版本 (5.5.8) 不满足该要求。 - 等等.....
    • 你没有PHP5.6(你的PHP版本是5.5.8)
    • @ChristopheWillemsen 为什么 Composer 不自动下载 4.0,如果这是获得此类所必需的?我正在关注主要文档 here,我现在想知道,如何在不先测试的情况下发布这样的文档...
    【解决方案2】:

    我们遇到了neo4j-php-client 也不支持 PHP 5.5 的问题。虽然“正确”的解决方案是升级到较新版本的 PHP,但它并不是最方便的——特别是如果您只想开始评估这个库。唯一需要 PHP >= 5.6 的 reason 是 Neo4j 的 bolt 协议,所以只要您坚持使用 http 协议,一切都会正常工作。不过,为了让composer 发挥出色,您必须将few changes 设置为neo4j-php-clientcomposer.json

    1. "php": "&gt;= 5.6" 更改为"php": "&gt;= 5.5"
    2. "graphaware/neo4j-bolt": "^1.5" 替换为"graphaware/neo4j-common": "^3.0"

    我们最终在 Github 上分叉了这个库,然后更新了我们的 composer.json 以使用我们修改后的 neo4j-php-client 版本。相关部分是:

    {
        ...
        "require": {
            ...
            "graphaware/neo4j-php-client": "dev-OptionalBoltSupport"
        },
        ...
        "repositories": [
            ...
            {
                "type": "vcs",
                 "url": "https://github.com/wnielson/neo4j-php-client"
            }
        ]
    }
    

    完成此操作后,您可以运行 composer update 并且 neo4j-php-client 应该可以正常安装。

    【讨论】:

      【解决方案3】:

      您只需要按照文档中的说明要求 vendor/autoload.php。
      所以require_once 'vendor/autoload.php'; 会解决你的问题。
      问题是,即使您使用use ...,您的 php 文件也不知道您要创建的 php 类文件的任何信息。
      您需要使用 includerequire 函数包含该文件。

      【讨论】:

      • 我做到了,很抱歉我没有在我的帖子中提到它。
      • 所以你没有导入那个权利。尝试在与 index.php 相同的目录中编写 require,然后 require('vendor/autoload.php');
      • “作曲家要求”是什么意思?作曲家的命令?我从与 index.php 相同的文件夹中运行 composer
      • 作曲家需要graphaware/neo4j-php-client:^4.0@alpha
      猜你喜欢
      • 2018-10-28
      • 1970-01-01
      • 2018-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多