#php
#php
Вопрос:
Я не эксперт по PHP; я пытаюсь использовать эту библиотеку TextRank, чтобы помочь с проектом. Кажется, я столкнулся со странной проблемой: даже после добавления функции автозагрузки выполнение в командной строке по-прежнему приводит к ошибке «класс не найден». Итак, вот макет:
Код, вызывающий другие классы («основной» код):
echo realpath (__DIR__);
function __autoload($class_name) {
if(file_exists(__DIR__ . "/lib/TextRank/" . $class_name . '.php')) {
require_once(__DIR__ . "/lib/TextRank/" . $class_name . '.php');
} else {
throw new Exception("Unable to load $class_name.");
}
}
$config = new Config;
$textrank = new TextRank($config);
$keywords = $textrank->getKeywords("The only asynchronous, one-on-four game in Nintendo’s booth came from the “Wait, they’re still making that?” franchise that is Mario Party, and its buried presence didn’t bode well. Thankfully, Mario Party 10’s demo didn’t waste time with the series’ slowest crawl-around-a-board-game moments, instead jumping straight into four mini-games.");
var_dump($keywords);
Вот моя структура каталогов:
- /test.php (приведенный выше файл)
- /lib
- /lib/TextRank (содержит все классы, на которые ссылается приведенный выше код
- /lib/TextRank/Config.php
Тем не менее, я все еще получаю:
Fatal error: Class 'Config' not found in /path/to/test.php
Это означает, что:
- Автозагрузка работает, поскольку исключений не было.
- Но почему-то PHP все еще не находит требуемые классы??
Имеет ли это какое-либо отношение к соглашениям о пространстве имен, используемым в классах, таким как:
(в /lib/TextRank/Config.php )
namespace crodasTextRank;
class Config
{
....
Ответ №1:
Да, это так. Вам нужно сделать
$config = new crodasTextRankConfig();
Но это не будет обнаружено вашим автозагрузчиком. Вам нужно искать автозагрузчик, совместимый с PSR-0.
Комментарии:
1. Вам нужно удалить crodas из имени или переместить классы в другую подпапку /lib/crodas/TextRank. В противном случае PSR-0 не может выполнять свою работу