2015-05-31 131 views
0

我剛剛使用Composer創建了我的第一個PHP軟件包,並且遇到了問題。作曲軟件包:AutoLoad並擴展另一個軟件包

目前我的工作,他的主要類從另一個包擴展的類的包,所以我composer.json我有我宣佈作爲一項要求延長包:

"require": { 
     "php": ">=5.3.0", 
     "ext-mbstring": "*", 
     "author/BasePackage": "dev-master" 
}, 

而且,如果我發出composer update,我會在我的項目中得到一個很好的vendor目錄,並在那裏下載author/BasePackage依賴項。

所以我的問題是,在我的主類文件src\Extended.php我需要手動執行類似require_once __DIR__ . "/../vendor/autoload.php";以自動加載BasePackage所以我可以做class Extended extends \BasePackage\BasePackage

可以嗎?我應該如何加載我的軟件包依賴關係?當我將這個軟件包提交給GitHub時,我忽略了vendor目錄,如果有人通過在其項目上要求require_once __DIR__ . "/../vendor/autoload.php";將會失敗,因爲它不會在我預期的目錄中。

我該怎麼做?

謝謝。

回答

4

不,這不行。

您可以放心地假設任何使用您的軟件包的人都在使用Composer。他將使用Composer的自動加載器。因此,他可以從包中加載自己的類以及包依賴的任何其他類,只要您將其列爲包中的依賴項即可。

不要手動加載其他類!你不需要。

您的軟件包中的測試應該在引導中包含vendor/autoload.php - 這將允許您的類直接可用,因爲其他包類也可以自動加載。任何示例腳本都應該包含創建的自動加載器。

如果你的包是用來在其他地方,即自動加載將採取行動是相同的:即作曲家設法有一個正確的自動加載聲明可以直接使用磁帶自動加載機已被列入後下載的所有類。

相關問題