0

Pheanstalk という composer でダウンロードしたライブラリを使用しています。次のスクリプトを実行しています。

<?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 ページ ( 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
4

1 に答える 1

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

?>

それで全部です。

于 2016-05-21T23:38:23.620 に答える