2013-05-03 23 views
3

以前我只使用第三方庫和Zend Framework 2一起使用命名空間。現在我需要使用不使用命名空間的a library,我似乎無法使它工作。我通過Composer安裝它,並且它安裝到vendor目錄中。我想,如下所示使用它:ZF2:沒有命名空間的自動加載庫

$obj = new \SEOstats();

結果表明類找不到一個致命的錯誤。我試圖手動配置StandardAutoloader,但目前爲止沒有任何運氣。我認爲在通過Composer進行安裝時會自動爲我自動加載,但是我想這不是沒有名稱空間的情況?我還沒有看到Composer生成的自動加載文件中的庫的任何引用。我想我必須手動做 - 但是怎麼做?

在此先感謝。

回答

8

您可以使用文件classmap鍵。

例如,考慮這個composer.json:

{ 
    "require": { 
     "vendor-example/non-psr0-libraries": "dev-master", 
    }, 
    "autoload":{ 
     "files": ["vendor/vendor-example/non-psr0-libraries/Library01.php"] 
    } 
} 

使用文件的關鍵,那麼你可以使用

$lib = new \Library01(); 

使用類映射鍵,當你需要加載包含類的多個文件。該composer.json是:

{ 
    "require": { 
     "vendor-example/non-psr0-libraries": "dev-master", 
    }, 
    "autoload":{ 
     "classmap": ["vendor/vendor-example/non-psr0-libraries/"] 
    } 
} 

作曲家將掃描.PHP。公司文件指定的目錄內配置爲每個文件/類自動加載。

欲瞭解更多信息,您可以檢查http://getcomposer.org/doc/04-schema.md#fileshttp://getcomposer.org/doc/04-schema.md#classmap

如果你是一個命名空間下在創建對象時,必須使用「\」(根命名空間),否則你將使用當前下Library01類命名空間(如果你有一個,如果你沒有一個,你會得到一個錯誤)。