Я использую библиотеку, которую я скачал с композитором под названием 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');
Вопрос: Почему я могу получить эту ошибку? Сценарий, приведенный выше, был в основном скопирован с Пример использования на странице Gheub Pheanstalk: 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.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
?>
Это все.
Других решений пока нет …