簡體   English   中英

spl自動加載:找不到類–名稱空間問題?

[英]spl autoloading: Class is not found – namespace issue?

我只是用PHP自動加載功能弄濕了自己。 我實際上認為我已經掌握了基礎知識,但是無論如何仍然無法正常工作。

我得到以下目錄結構:

myLib
    -bootstrap.php
    -sven
        -project
            project.php

bootstrap.php是將包含在使用該lib中的文件。 在此文件中,我僅具有以下代碼:

spl_autoload_extensions('.php');
spl_autoload_register();

$var = new \sven\project\project();
$var->init();

並在project.php

namespace sven\project;

class project {
    public function init() {
        echo 'It works!';
    }
}

據我了解,自動加載器的使用方式,核心PHP自動加載器應將名稱空間轉換為目錄,然后尋找包含該類的php。

而不顯示“它有效!”,而是引發致命錯誤。 不幸的是,我無法確切地說出該錯誤是什么,因為CMS僅通知我一個致命錯誤。
但是,通過如此簡單的結構,我相信該錯誤非常基本,並且對於知道其工作原理的人來說很容易找到。

該示例在哪里出問題–我是否正確描述了自動裝帶器在該設置中應如何工作,還是有誤解?

編輯:最終使錯誤日志運行:

Fatal error: Class undefined: sven\\\\project\\\\project\\\\project\\\\project in /xxx/bootstrap.php on line 36

那顯然看起來是錯誤的,但是如何改變呢? 為什么會有兩個反斜杠?

spl_autoload_extensions('.php');
spl_autoload_register();

此代碼僅適用於PHP 5.3及更高版本。

斯文

我剛剛回答了另一個有關spl_autoload的問題,請嘗試單擊此處的示例

希望對您有所幫助!

PS:另外,不要只是自動加載路徑中的所有.php文件,這很危險!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM