Класс не найден с PSR-0
Я полностью застрял в этом вопросе! Я использую php-простой-html-dom-анализатор, и он загружен с PSR-0. Я не настолько хорошо знаком с PSR-0. Но я использую класс так же, как показано в файле readme, но я не могу заставить его работать.
В моей IDE автозаполнение работает нормально, и никаких ошибок не отображается. Но когда я запускаю скрипт, я получаю следующую ошибку:
Неустранимая ошибка: класс 'Sunra\phpsimple\htmldomparser' не найден в C:\xampp\htdocs\folder\test.php в режиме онлайн 3
Код:
<?php
use Sunra\PhpSimple\HtmlDomParser;
$dom = HtmlDomParser::file_get_html();
Структура файла:
folder\
Sunra\
PhpSimple\
simplehtmldom_1_5\
HtmlDomParser.php
test.php
Как я уже сказал, я действительно понятия не имею, что происходит не так. Так что, вероятно, я ищу не то, что нужно, и именно поэтому я публикую этот вопрос.
3 answers
Скачать Композитор
В каталоге вашего проекта выполните:
php composer.phar require sunra/php-simple-html-dom-parser ~1.5
В вашем php-файле (index.php например), добавьте:
<?php
include 'vendor/autoload.php';
use Sunra\PhpSimple\HtmlDomParser;
$dom = HtmlDomParser::file_get_html();
Здесь, когда вы включаете vendor/autoload.php
, конфигурация автоматической загрузки, созданная композитором, обрабатывает все загрузки класса для вас. Почти все библиотеки на github, которые следуют за PSR-0, существуют в Packagist, что делает их доступными для установки таким образом.
Возможно, вы захотите прочитать о Семантическом управлении версиями, чтобы получить представление о том, что вы устанавливаете, когда вам требуются библиотеки.
Большинство современных фреймворков PHP теперь используют Composer для своих зависимостей. Однако это все еще полностью выполнимо для небольших проектов даже из одного файла.
Ну, вы не используете загрузчик, таким образом, класс не будет загружен автоматически.
Вот минимальный пример автозапуска который использует PSR-0.
После того, как вы поймете, что такое автозагрузка, вам следует попробовать использовать фреймворки управления зависимостями, такие как Composer. Видишь Флоскулус ответьте для получения более подробной информации.
Используя автозагрузчик PSR-0, вы добавили его в реестр spl_autoload_register ("автозагрузка") или используете автозагрузчик composer и включенных композиторов?
Это работает для меня:
<?php
function autoload($className)
{
$className = ltrim($className, '\\');
$fileName = '';
$namespace = '';
if ($lastNsPos = strrpos($className, '\\')) {
$namespace = substr($className, 0, $lastNsPos);
$className = substr($className, $lastNsPos + 1);
$fileName = str_replace('\\', DIRECTORY_SEPARATOR, $namespace) . DIRECTORY_SEPARATOR;
}
$fileName .= str_replace('_', DIRECTORY_SEPARATOR, $className) . '.php';
require $fileName;
}
spl_autoload_register('autoload');
use Sunra\PhpSimple\HtmlDomParser;
$dom = HtmlDomParser::file_get_html('http://google.com');
var_dump($dom);
?>
Источник: http://www.php-fig.org/psr/psr-0/