2009-10-26 42 views
4

在PHP項目中定位外部庫的最佳做法是什麼(例如,GoogleMapAPI,Recaptcha等)?現在我有/ lib或其子目錄中的所有類,並且使用Zend約定進行命名(例如,Foo類位於/lib/Foo.php,Db_Bar類位於/lib/Db/Bar.php中)。PHP項目中外部庫的最佳位置是什麼?

但我應該隔離第三方的東西?如果是這樣,怎麼樣?哪裏?裏面/ lib?別處?注意:這些類的自動加載不是問題,因爲它們總是在需要時顯式包含/需要(與我自己的類不同)。

謝謝!

回答

4

你在正確的軌道上,把一切在/lib。我建議將每個文件分離到自己的子文件夾中,因爲許多庫都會有多個文件。所以有/lib/googlemaps/lib/recaptcha等等。

如果你還是不能確定,也許看看像笨一些框架。 Joomla使用我上面描述的系統。他們甚至有整個Joomla框架的/lib/joomla

有沒有必要過分考慮它。只要容易找到幷包含這些庫,請不要擔心。

+0

@DisgruntledGoat謝謝! – PartialOrder 2009-10-26 15:37:31

0

不能與Linux的最佳實踐例如對齊/ usr /共享與每個模塊類型的lib層次?

0

你可以始終保持名稱和文件的位置在一個數據庫中,如果你不想將它們存儲在服務器上。然後,您可以使用存儲的信息在需要時加載它們。此外,這還會阻止您在需要進行更改時不得不更改許多網頁。

+0

...或者有一個「聰明的」自動加載器,即自動加載類的配置文件。 – jldupont 2009-10-26 15:32:42

2

這通常是我遵循組織我的應用程序的結構:

myproject/ 
myproject/app 
myproject/app/controllers 
myproject/app/views 
myproject/app/models 
myproject/config 
myproject/log 
myproject/lib 
myproject/lib/external 
myproject/lib/external/Zend -> symlinked to -> /whatever/libraries/zend-1.x.x/ 
myproject/lib/external/GoogleMaps/ -> symlinked to -> /whatever/libraries/gmaps-1.x/ 
myproject/lib/core (to my application) 
myproject/lib/core/Adapters/Rest.inc 
myproject/lib/core/Facades/SimpleTwitterApi.inc 
....etc.... 

這是有幫助的lib /外部因爲我平時的符號鏈接不同版本的庫(Zend公司等)和更新他們變得更管理。另外,如果您使用版本控制系統,有趣的是看看lib/core與lib/external有多少提交。另外,你可以使用類似phploc的東西來查看你的代碼的大部分是在外部庫還是在你的核心中。

順便說一句,這是很好的聽到自動加載是不是一個問題,你就明確地包括/要求所需文件:)

+0

這與我所做的非常接近。我通常包含我正在使用的庫的特定版本,而不是鏈接到它們以避免版本不匹配,但當然還有其他方法可以處理該版本。 – 2009-10-26 16:38:30

相關問題