我完全坚持这个问题!我正在使用php-simple-html-dom-parser并且它加载了PSR-0。我对PSR-0并不熟悉。但我正如自述文件所示使用该类,但我无法使其正常工作。
在我的IDE中,autcompletion工作正常,没有显示任何错误。但是当我运行脚本时,我收到了这个错误:
致命错误:第3行的C:\ xampp \ htdocs \ folder \ test.php中找不到类'Sunra \ PhpSimple \ HtmlDomParser'
代码:
<?php
use Sunra\PhpSimple\HtmlDomParser;
$dom = HtmlDomParser::file_get_html();
文件结构:
folder\
Sunra\
PhpSimple\
simplehtmldom_1_5\
HtmlDomParser.php
test.php
正如我所说,我真的不知道出了什么问题。所以我可能正在寻找错误的东西,这就是我发布这个问题的原因。
答案 0 :(得分:5)
下载Composer
在项目目录中运行:
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
时,作曲家生成的自动加载配置会为您处理所有类自动加载。几乎所有跟随PSR-0的github上的库都存在于Packagist上,使得它们可以通过这种方式安装。
您可能需要阅读Semantic Versioning以了解在需要库时要安装的内容。
现在大多数现代PHP框架都使用Composer来实现它们的依赖关系。但是,即使是单个文件的小项目,它仍然完全可行。
答案 1 :(得分:2)
嗯,您没有使用 autoloader ,因此系统不会自动加载。
这是使用PSR-0的最小 autoloader example 。
了解自动加载后,您应该尝试使用依赖管理框架,例如 Composer 。有关详细信息,请参阅 Flosculus's 答案。
答案 2 :(得分:-1)
使用PSR-0自动加载器,您是否将它添加到spl_autoload_register('autoload'),或者您使用的是作曲家和包含的作曲家自动加载器?
这对我有用:
<?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);
?>