2013-05-27 71 views
0

因此,這裏是我的自動加載 -不明白爲什麼自動加載不工作

function __autoload($classname){ 
    include $classname.'.php'; 
} 

我萬一使用DOCROOT也試過....

function __autoload($classname){ 
    define('DOCROOT', dirname(__FILE__)); 
    include DOCROOT.'/'.$classname.'.php'; 
} 

但是,當它遇到的PatentAssignment類,它說,它無法找到該類的定義...

然而,如果我有一個

include 'PatentAssignment.php'; 

在將使用它的類的構造函數中,一切工作正常。不知道發生了什麼事。事實上,它甚至不會調用自動加載,只是會去弄糊塗做什麼。

+1

所以在每次調用你定義一個常數? – zerkms

+1

這裏沒有很多信息... __autoload函數在哪裏?是文件中包含的文件是否試圖實例化對象?是與你的類文件在同一目錄中的文件?在zerkms'commment上延伸的 – HorusKol

+0

:爲什麼不只是使用'include __DIR__。 '/'。 $ classname。 '.php';' – HorusKol

回答

1

是什麼構造的樣子(與包括)? 將自動加載代碼放在所有類定義之前,最好在初始化php文件的頂部。 嘗試調試:

function __autoload($classname) { 
    echo 'looking for ' . $classname . ' in ' . getcwd(); 
    include $classname.'.php'; 
} 
  1. http://php.net/manual/en/function.getcwd.php

獲取當前工作目錄。你的所有文件都在同一個文件夾中嗎?

  1. http://de3.php.net/manual/en/function.spl-autoload.php

使用spl_autoload代替:

spl_autoload_register(function ($class) { 
    include($class . '.php'); 
    }); 
0

試試這個:

spl_autoload_register(function($class) { 
    //your function here 
    return class_exists($class, false); 
    }); 
相關問題