2011-03-28 65 views
7

我使用子模塊的git,我很難弄清楚如何組織我的文件。我在PHP中開發,並使用單元測試。所以現在,我用這個組織爲每個模塊:使用git和submodule,什麼是好的文件夾結構?

  • 的src/
  • 測試/

這似乎是一個絕妙的主意,但問題是,當我做了「混帳子模塊添加「到一個項目中,我會有這樣的路徑: project/modules/News/src/index.php

src /文件夾確實存在問題。

我是否應該簡單地將我的所有文件放在模塊根目錄下,並在源文件中混合使用測試/文件夾?對我來說聽起來很糟糕。你在做什麼 ?

編輯:由於自動載入,src/Folder存在問題。我不應該把「src」放在我所有的班級名稱中......

+0

關於編輯的問題:問題是您希望類名匹配到文件夾結構。 Ofc每個模塊也應該有它自己的測試,這是一個問題,因爲你不能包括(如BarModule/src => module/Bar)與git子模塊? (只是檢查我得到您的要求權利) – edorian 2011-03-29 16:28:01

回答

4

只要自動加載器能夠以某種方式找到您的文件,您的文件夾佈局大多無關緊要。如果您使用PEAR約定將類名稱映射到它們的源文件,則可以將src目錄添加到包含路徑或堆疊第二個自動裝載器。然後你不必添加src到類名。

PEAR約定的替代方法是使用文件和類之間的靜態映射。有a tool that can automatically generate such an autoloader for you at GitHub

靜態自動裝載機方法也用於PHP Project Wizard。該工具將創建src和測試文件夾,其中包括your phpunit configbuild file to connect your project with Jenkins CI。這是一個方便的軟件包。

至於包含子模塊,請考慮將它們放入lib或ext文件夾中。在phpdox project at GitHub中可找到這種外觀的一個例子。確保你也看看main bootstrap file,看看如何包含各種自動加載器。

+0

你是對的,除了我可以在一個項目中擁有30多個模塊。所以我要堆疊30多臺自動加載器,這不是很糟糕嗎?我已經知道(和合作)到phpdox項目;)但這不是同一種子模塊。在我的情況下,子模塊更像是一個wordpress插件。此項目必須是PHP 5.2 :( – FMaz008 2011-03-29 13:03:47

+0

@ FMaz008爲什麼不使用TheSeer的PHPAB並讓它遍歷整個項目,包括你的30個子模塊,然後使用那個單一的自動加載器呢?IIRC PHPAB也有一個5.2的模板,所以版本不應該是一個問題。 – Gordon 2011-03-31 14:42:40

3

我在面對這個問題時所做的是創建一個名爲vendors的文件夾,並將所有子模塊放入該文件夾中。然後我使用相對路徑將這些目錄鏈接到我的代碼中我想要的位置。你可以將符號鏈接提交給git,並且當其他人拉動版本庫時他們仍然可以工作。當然,這隻適用於使用基於* nix的操作系統的情況。

例如:

modules/ 
vendor/module1/src/ 

能像這樣(從modules目錄)被符號鏈接:

ln -s ../vendor/module1/src module1 

不知道這樣能否解決您的問題或沒有。

+0

但如果一些開發人員使用Windows?符號鏈接不可用... – FMaz008 2011-03-28 16:08:56

+0

某些版本的Windows有類似符號鏈接的東西,你可以試試它們。我不在Windows上開發,所以我從未嘗試過。 – MitMaro 2011-03-28 16:29:19

0

我不會在單獨的模塊中進行測試。將其保存在同一個存儲庫中。

+1

我從來沒有計劃將我的測試放在不同的存儲庫中。所有模塊都與他們自己的測試捆綁在一起。 – FMaz008 2011-03-29 12:54:48

相關問題