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