[英]Class not found with PSR-0
我完全坚持这个问题! 我正在使用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
正如我所说,我真的不知道出了什么问题。 所以我可能正在寻找错误的东西,这就是我发布这个问题的原因。
下载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上,使得它们可以通过这种方式安装。
您可能希望阅读语义版本控制,以了解在需要库时要安装的内容。
大多数现代PHP框架现在都使用Composer来实现它们的依赖关系。 但是,即使是单个文件的小项目,它仍然完全可行。
好吧,您没有使用自动加载器 ,因此不会自动加载该类。
这是一个使用PSR-0的最小自动加载器示例 。
了解自动加载后,您应该尝试使用Composer之类的依赖关系管理框架。 有关详细信息,请参阅Flosculus的答案。
使用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);
?>
资料来源: http : //www.php-fig.org/psr/psr-0/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.