2016-05-21 4 views
0

Я использую библиотеку, которую я скачал с помощью композитора Pheanstalk. Я бегу следующий сценарий: появляетсяНеустранимая ошибка: Class 'Pheanstalk 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');

Вопрос: Почему я мог бы получать эту ошибку? Сценарий, приведенный выше, был в основном скопирован с . Пример использования, указанный на странице Phenomstalk 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 
+0

'композитор самосвал-автозагрузка'? – Arcesilas

+0

@Arcesilas Я запускаю это в терминале и выдаю вам результат? Я относительно новичок в Linux и композиторе – Webeng

+0

Просто запустите его в терминале и повторите попытку. – Arcesilas

ответ

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 не был помещен в пространство имен.

UPDATE

Так что ваш код должен быть таким:

<?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 

?> 

Это все.

+0

Так что мне пришлось бы менять 'user Pheanstalk \ Pheanstalk'' использовать Pheanstalk_Pheanstalk'? Поскольку я ранее упоминал в комментариях, я попробовал это и получил еще одну ошибку хаха. Я попробую еще раз и опубликую. Если я получу ошибку – Webeng

+0

Только что отредактировал мой ответ – Arcesilas

+0

Отредактировано это снова :) – Arcesilas