2010-09-08 78 views
1

我有使用標準結構的ZF應用其他的庫:包括Zend框架應用

application/ 
    <etc> 
library/ 
    Zend/ 
public/ 
tests/ 

我也有一個獨立的庫使用以下結構:

library/ 
    <classes> 
tests/ 
    library/ 

兩者都使用GIT中爲源控制。我想將該庫包含在應用程序中,但我正在努力尋找一種可行,可維護的方法來完成此操作。圖書館的「圖書館」文件夾中的內容結構,以便適用於自動加載,所以最好我想庫的內容/在ZF應用程序的庫目錄存在:

library/ 
    Zend/ 
    <classes> 

我不能使用git子模塊,因爲我不能將子庫作爲子模塊包含在子庫中,子模塊本身必須存在於子文件夾中(所以我最終會得到庫/ something/<類>)。

我一直在玩these subtree extensions git,這很酷,並解決第一個問題(讓我把我的庫項目的庫文件夾拆分成它自己的回購)。但我仍然有問題,不直接將此回購的內容包含到我的庫文件夾中。

我試圖避免添加一個全新的文件夾自動加載只爲這個lib。

有誰知道一個很好的解決方案,或者是否有人使用略有不同的項目結構來避免這種情況?

+2

嗯,我不能對Git的問題發表意見,因爲我使用SVN,但就直接放置我把其他的lib中'庫/ PackageName「並從那裏加載它們。 – prodigitalson 2010-09-08 23:53:37

+0

問題在於庫中的類已經在PackageName中命名空間了,所以我唯一的方法就是創建一個我的庫的拆分庫,作爲庫/ PackageName/*和子模塊包含它,這似乎很麻煩。 – 2010-09-09 08:13:47

+0

由於命名空間衝突,你不能說明你的意思 - 你可以註冊你自己的自動加載器命名空間,並將它指向任何你想要的地方,所以像'PackageName/PackageName'這樣的東西不應該是一個問題。 – prodigitalson 2010-09-09 17:24:18

回答

0

你試圖把單獨的庫旁邊的Zend在/庫和添加:

autoloaderNamespaces[] = "YourLibName" 

要的application.ini?那就是我會做的。

如果它沒有這樣做還添加此來引導:

protected function _initAppAutoload() 
{ 
    $moduleLoad = new Zend_Application_Module_Autoloader(array(
     'namespace' => '', 
     'basePath' => APPLICATION_PATH 
    )); 
} 
+0

謝謝,但它正在將文件放入/ library中,這是問題所在,因爲我想要使用git子模塊或其他一些方法來讓我輕鬆地保持最新狀態。 – 2010-09-09 08:12:24