繁体   English   中英

PSR-0找不到的班级

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM