我有index.php文件,在最頂層我定義__autoload魔術功能。__autoload是否會影響包含的文件?
function __autoload($className) {
echo "autoloading $className";
require_once('application/models/'.strtolower($className).'.php');
}
然後,我引用由__autoload自動包含的User對象(User.php)。一切正常,直到這一刻。 問題是user.php的引用文件類
$obj->numberOfUploads = File::countUploadsByUser($obj->ID);
,並在這一點上引發錯誤
Fatal error: Class 'File' not found in Z:\home\project\www\application\models\user.php on line 19
的事情是,我可以看到輸出
autoloading User
但無法看到任何重新註冊文件。所以,就像看起來一樣,當捕獲對File的引用時,__autoload函數根本不會被調用。試圖將__autoload函數添加到User.php導致有關重新聲明該函數的錯誤。
我很抱歉,如果這個問題被提出之前,我試圖谷歌,並沒有發現任何信息。
乾杯
我認爲這是可能的,你所看到的輸出是假陽性,因爲你被加載'User'腳本時很可能看到的。我剛剛開始學習如何使用命名空間,但我想知道這是否有助於解決這個問題? http://php.net/manual/en/language.namespaces.importing.php –
你是對的 - 只有在包含成功的情況下才顯示輸出。我還沒有處理名稱空間,因爲這是一個相對較新的功能,所以我不能說它是否可以提供幫助。但Fabian Tamp的解決方案訣竅 –