簡體   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