2013-10-23 42 views
1

在C#和java世界中,我們習慣於將名稱空間準確映射到文件夾結構,並且通常以com.myCompany作爲前綴。 現在我開始使用PHP項目重構任務:重構期間PHP命名空間的最佳實踐?

  • 該項目沒有使用名稱空間。
  • 它沒有通過使用帶有前綴/後綴的長類名來命名衝突。
  • 我們使用spl_autoload_register,它只是在預先定義的文件夾下搜索文件。
  • 除了某些模塊,我們不打算將完整的源代碼共享給公衆以供重用。
  • 最重要的是:我們有限的資源來重構。

這裏是我的問題:

  1. 我應該使用命名空間爲所有的項目文件,或者只使用 那些我們想公開,或完全不使用?
  2. 如果使用命名空間,它是否應嚴格地映射文件夾結構(所以可以使用自動加載更簡單的方式),還是休閒風格是好的?
  3. 我應該使用com/myCompany作爲前綴還是不是?
  4. 如果有什麼好的工具來做這種安全的重構? (我使用PHPStorm但它無法找到所有的用法一些代碼是 動態)

我想平衡的最佳方法和重構所需要的時間。感謝您的高級幫助。

P.S.我已閱讀https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-0.md。如果我做了一個新的PHP項目,我肯定會遵循指導原則。但是,我正在使用現有的項目,所以我想知道從命名空間嚴格使用中獲得的好處是否會大於我花費的成本;如果我可以做出任何折衷的話,可以儘量減少我需要做的改變。

+0

我知道這是一篇舊文章,但我強烈推薦PHPStorm,如果您正在進行重構 - 它將允許您命名空間類,它將移動類到正確的文件夾並更新對該類的任何引用與命名空間。 – rgvcorley

回答

2

如果您重新調整文件以符合PSR-0標準,它會讓您的生活更輕鬆。請注意,該標準不會強制您使用名稱空間。如果您知道基於類名的文件的位置,則加載速度將比您需要搜索該文件的速度更快。

由於類名較短,因此命名空間可能會使編碼生命變得更容易一些。如果您導入任何其他外部代碼(有許多有用的庫),您將避免與您的類名稱衝突。但他們不是終極的銀彈,所以如果你認爲這會浪費時間,那麼你可以沒有他們。

+0

談到較短的名字,我在這裏發現了一篇有趣的文章http://brady.lucidgene.com/2012/04/how-to-create-good-namespaces-and-class-names-in-php-5-3/它顯示更短並不總是更好:)所以我想知道是否真的需要添加像/ com/myCompany/proj/controller這樣的命名空間,並將類ABCController重命名爲ABC。似乎沒有從中獲益。 – ElfeXu