2015-04-01 93 views
0

我在Laravel 5應用程序中開發一組packag。自定義作曲家自動加載目錄,加載多個包

所有包都有以下結構。

文件夾結構:

Vendor/Package/src

composer.json

"autoload": { 
    "psr-4": { 
     "Vendor\\Package\\": "src/" 
    } 
}, 

我希望能夠有一個包含包vendors/文件夾以外的單獨的文件夾, 正在開發中。因爲它們是應用程序的基礎。注意:這些軟件包不會通過作曲家下載,只需使用作曲家自動加載。

例如

\Laravel-App 
    \app 
    \bootstrap 
    \config 
    \database 
    \public 
    ... 
    \src 

\src包含上述所有軟件包的目錄。

+0

如果我所有的軟件包裏面都沒有'\ src'目錄,那麼它可以工作......雖然我需要額外的軟件包層。我可以在psr-4自動加載中包含很多命名空間,儘管這似乎很艱難 – AndrewMcLagan 2015-04-01 03:51:21

+0

創建另一個函數來攻擊[spl_autoload](http://php.net/manual/en/function.spl-autoload.php),該加載基於你正在開發的軟件包的指令? – Jon 2015-04-01 03:53:05

回答

0

每個包中都有一個composer.json是不相關的,因爲這些不是由composer(尚未)管理的。如果軟件包已安裝/更新,它們的自動載入定義將僅用於Composer的自動載入轉儲。 這裏沒有由Composer處理,只是坐在一個文件夾中。

解決自動加載問題有多種方式。 你可以:

  • 使用PHP自動加載功能,註冊自己的自動加載(引導過程中)
  • 使用Laravel的自動裝彈機的路徑添加到這些包(應用程序引導過程中,經過的地方laravel自動加載磁帶機初始化)
  • 使用Composer的自動加載器來添加這些包的路徑(在應用程序引導過程中,在Composer初始化之後)
  • 但最簡單的方法是在主應用程序的composer.json文件的自動加載部分中定義映射。然後,在安裝或更新Composer管理的依賴關係之後,它們將被包含在轉儲的自動加載器中。