2014-01-08 35 views
1

對於我正在工作的項目,我想創建一個包含多個小包的'核心'包,就像laravel與它的框架一樣。 的文件夾結構會是這樣的,Laravel框架像包,轉儲自動加載不工作

Package1: gybrus/core/src/Gybrus/Package1 
Package2: gybrus/core/src/Gybrus/Package1 

做一些研究我發現,這可能與作曲家來實現,如果我沒有記錯,但這也是它打破了我之後。 目前我有多個composer.json文件,但運行'php artisan dump-autoload'命令後,這些類不會添加到自動加載文件中。 因此,我想知道如果Laravel框架添加一些額外的魔法,使這種情況發生。

在此先感謝!

這是我目前的設置,爲了不做廣告,我改變了軟件包名稱;) 第一個composer文件位於'src'文件夾旁邊的'core'文件夾中。

{ 
    "name": "gybrus/core", 
    "description": "The Core", 
    "keywords": ["core"], 
    "authors": [ 
    { 
     "name": "Kevin Dierkx", 
     "email": "[email protected]" 
    } 
    ], 
    "require": { 
    "php": ">=5.3.0", 
    "laravel/framework": "4.0.x" 
    }, 
    "replace": { 
    "gybrus/package1": "self.version" 
    }, 
    "require-dev": { 
    "mockery/mockery": "dev-master", 
    "phpunit/phpunit": "3.7.*" 
    }, 
    "autoload": { 
    "psr-0": { 
     "Gybrus": "src/" 
    } 
    }, 
    "minimum-stability": "dev" 
} 

第二作曲家文件是在包1文件夾:

{ 
    "name": "gybrus/package1", 
    "authors": [ 
     { 
      "name": "Gybrus", 
      "email": "[email protected]" 
     } 
    ], 
    "require": { 
     "php": ">=5.3.0", 
     "illuminate/support": "4.0.x" 
    }, 
    "autoload": { 
     "psr-0": {"Gybrus\\Package1": ""} 
    }, 
    "target-dir": "Gybrus/Package1", 
    "minimum-stability": "dev" 
} 
+0

呃 - 你在一個包裏有多個作曲文件? – Danack

+0

是的,這個軟件包包含多個較小的軟件包。 laravel框架做了類似的事情,這個問題是我沒有像laravel框架那樣工作。 –

回答

0

發現我的問題的原因!

第一個腳本告訴作曲家,它應該自動加載'src'文件夾中的命名空間'Gybrus',經過一些測試後,按照預期工作。 如果以上設置休息是以下行:

return Finder::create()->files()->in($workbench)->name('composer.json')->depth('< 3'); 

這告訴Finder可以停止尋找了比2個文件夾更深composer.json文件。 到目前爲止沒有什麼奇怪的。

問題出在哪裏,我將工作臺軟件包符號鏈接到工作臺文件夾中。 這會導致composer.json文件實際上比他們應該更深的奇怪問題,從而導致加載composer.json文件並中斷這些包的自動加載。

一個快速解決的辦法是不要符號鏈接或從包內運行作曲家安裝。