3
在試驗spl_autoload,命名空間和動態類名時,我遇到了一個「奇怪」的事情。我使用PHP 5.3.2,像這樣調用自動加載PHP命名空間和動態類名
set_include_path(get_include_path().PATH_SEPARATOR."classes".PATH_SEPARATOR."utils");
spl_autoload_extensions(".class.php");
spl_autoload_register();
現在到了核心。建議如下代碼:
new \User\Student;
$name="\User\Student";
new $name();
這工作正常,file classes/user/student.class.php成功加載,兩個構造都成功。然而,有點不同的用法:
$name="\User\Student";
new $name();
new \User\Student;
失敗的「..類\用戶\學生無法加載...」。我建議它以某種方式與靜態/動態名稱空間分辨率有關。但是,我不認爲這兩者之間應該有什麼區別,除了它們在(編譯與運行時)處理的時間之外。
感謝您的任何解釋。
嘗試刪除字符串中的前導反斜槓。動態類名始終是完全合格的,因此不鼓勵在其中添加反斜槓。 – NikiC 2012-08-14 10:55:08