2016-12-07 14 views
0
#file1 
spl_autoload_register(function($class){ 
    require_once "{$class}.php"; 
}); 

new classes\Foo(); 

#file2 
namespace classes; 
class Foo implements toolInterface { 
    function __construct(){ 
     echo __CLASS__; 
    } 

    public function tool(){ 

    } 
} 

我有spl_autoload_register問題,上面的例子中工作得很好,但是當我嘗試使用use classes就會有致命的錯誤,任何人都知道如何解決這個問題?spl_autoload_register無法得到「使用」命名空間

//fatal error 
spl_autoload_register(function($class){ 
    require_once "{$class}.php"; 
}); 

use classes; 
new Foo(); 

回答

1

指外部的完全限定名,別名

注意的能力,對於命名空間的名稱(包含命名空間分隔符,如富\酒吧,而不是全球 名完全合格的命名空間名稱 那如FooBar),主導反斜槓是 不必要和不推薦,作爲導入名稱必須完全合格 合格,並且不處理相對於當前命名空間

PHP: Using namespaces: Aliasing/Importing

因此,我們需要完全合格的名稱

use classes\Foo; 
new Foo(); 
0

如果您需要登錄提供給你,你會注意到,FQCN(完全限定類名)給出的封閉的可變$class。在你的情況下:

classes\Foo 

你將需要確保文件路徑是正確的。

或者你也可以使用事實上的標準 - Composer - 不要介意,主頁有一個指揮的圖片的事實。