【问题标题】:Fatal Error: Class 'Pheanstalk\Pheanstalk` not found致命错误:找不到类“Pheanstalk\Pheanstalk”
【发布时间】:2016-09-19 00:47:02
【问题描述】:

我正在使用我通过 Composer 下载的名为 Pheanstalk 的库。我正在运行以下脚本:

<?php

//... some unrelated code

require_once('vendor/autoload.php');        //loading the autoload file from composer
use Pheanstalk\Pheanstalk;                  //using the namespace
$pheanstalk = new Pheanstalk('127.0.0.1');  //initiating an object

//... some unrelated code

?>

出现如下错误:

Fatal Error: Class 'Pheanstalk\Pheanstalk' not found in /opt/lampp/htdocs/project_zero/index.php on line 16

第 16 行是:$pheanstalk = new Pheanstalk('127.0.0.1');

问题:为什么我会收到此错误?上面的脚本基本上是从 Pheanstalk github 页面上给出的 Usage Example 复制粘贴的:https://github.com/pda/pheanstalk

我的composer.json文件的内容是:

{
  "require": {
    "pda/pheanstalk": "2.1.1"
  }
}

编辑:

使用时的新错误:

use \Pheanstalk_Pheanstalk

错误:

Warning: The use statement with non-compound name 'Pheanstalk_Pheanstalk' has no effect in /opt/lampp/htdocs/project_zero/index.php on line 14

Fatal error: Class 'Pheanstalk' not found in /opt/lampp/htdocs/project_zero/index.php on line 17

【问题讨论】:

  • composer dump-autoload?
  • @Arcesilas 我是否在终端中运行它并给你输出?我对 linux 和 composer 比较陌生
  • 在终端运行它然后重试。
  • 不过,它应该由 composer 在安装新包时自动运行。
  • @Arcesilas 我刚刚在终端中的 composer.json 文件位置运行它,输出为:Generating autoload files。我尝试再次运行脚本,出现同样的错误

标签: php composer-php pheanstalk


【解决方案1】:

根据您的composer.json,您使用的是2.1.1版本:https://github.com/pda/pheanstalk/blob/2.1/classes/Pheanstalk/Pheanstalk.php

类名是 Pheanstalk_Pheanstalk 而不是 Pheanstalk\Pheanstalk:此时它不符合 PSR-4。

所以你应该只使用:

<?php
use \Pheanstalk_Pheanstalk;

当您在命名空间文件中时。如果您不在文件中使用命名空间,则无需“导入”该类。

如果您使用命名空间,反斜杠很重要,因为 2.x 版本中的类没有命名空间。

更新

所以你的代码应该是这样的:

<?php

//... some unrelated code

require_once('vendor/autoload.php');        //loading the autoload file from composer
$pheanstalk = new Pheanstalk_Pheanstalk('127.0.0.1');  //initiating an object

//... some unrelated code

?>

就是这样。

【讨论】:

  • 所以我必须将user Pheanstalk\Pheanstalk 更改为use Pheanstalk_Pheanstalk?因为我之前在 cmets 中提到过,所以我尝试过,但又遇到了另一个错误哈哈。我会再试一次并发布如果我收到错误
  • 再次编辑 :)
  • 哈哈现在出现了一个新错误,我用之前修改时遇到的错误编辑了我的答案。我尝试使用 \ 而没有 \ 也
  • 如我所说:如果不使用命名空间,则不需要导入类。您的文件中没有命名空间,无需使用use Pheanstalk_Pheanstalk
  • 就是这样。您正在使用为版本 3 提供的示例。切换到代码的 2.1 分支:github.com/pda/pheanstalk/tree/2.1 会为您提供正确的说明(在您的文件中,README.md
猜你喜欢
  • 1970-01-01
  • 2019-08-19
  • 2022-01-19
  • 2013-07-31
  • 2016-09-19
  • 2017-05-24
  • 2016-09-21
  • 2014-10-03
相关资源
最近更新 更多