2010-01-26 46 views
8

我的團隊必須維護一個寫得很差的大型php應用程序。它是一個混合了html,javascript和SQL的大型設計不良的數據庫(例如它有一個只有幾百列的表格)。代碼庫的唯一優點是它可以工作。在意大利麪條代碼庫上使用什麼php框架?

我們經常修復bug並重寫它的一部分。

我想給出一個結構來重寫我們所做的,所以我已經將mvc框架集成到了代碼庫中。你能提出一個好的環境框架嗎?

這裏的事情,我將可從此種框架期望列表:

  • API必須非常穩定。我們不能在每個版本中重寫代碼。
  • 自定義會話管理或至少使用標準的$ _SESSION [](爲了能夠與舊代碼交談)。
  • 定製認證。
  • 應該很好地支持使用原始SQL(數據庫很難用對象來表示)。
  • 它不應該假設我將有一個每個控制器的表。
+0

不是一個真正的答案,但我的依賴規則是我自己的角色或選擇依賴性最依賴的角色。我總是問自己:「如果圖書館/框架/ X突然消失了,世界會結束嗎?」我更願意依靠那些與該頻譜「是」最接近的東西。 – 2010-01-26 14:40:50

+0

@Doug代碼庫的唯一依賴項是html,js和php。 – 2010-01-26 14:52:26

回答

2

我呼應的Zend只是列出它如何適合您的具體要求:

  • API必須是非常穩定。我們不能在每個版本中重寫代碼。

如前所述,API在次要版本之間趨於穩定。主要版本的變化不應該難以整合。

  • 自定義會話管理或標準$ _SESSION []至少工作(爲了能夠使用舊代碼交談)。

Zend_Session不正是你想要的。默認的會話存儲是$ _SESSION,Zend添加了一個名稱空間概念。你現有的代碼應該沒問題,並且任何新的代碼都可以使用Zend對象來確保沒有變量名稱重疊。

  • 自定義身份驗證。

Zend_Auth有一些認證後端,但它主要是讓你實現自己的身份驗證。

  • 使用原始SQL應該很好的支持(該數據庫是很難按照對象的形式來表示)。

Zend_DB實現表網關模式,這將允許通過對象訪問數據;但是,您也可以直接使用SQL並以數組形式獲得結果。

  • 它不應該假設我將有一個表每個控制器。

Zend_Controller和Zend的MVC實現的其餘部分作出任何有關模型的假設,留下完全取決於你。我相信有些人不喜歡這樣,但是它是MVC設計的一個領域,因項目而異,因此完全由開發人員完成。您可以擴展一些數據庫類,或者只使用現有的數據庫訪問代碼。

這是Zend Framework的選擇和選擇心態的一個例子。你真的可以自己使用任何庫。這應該適合你的項目。例如,您可以使用Zend_View而不用其他的MVC類來將您的演示文稿移動到模板中。或者只需使用Zend_Auth替換現有的Auth系統。藉助Zend,您可以逐漸將您的項目逐步轉變爲更加結構化的狀態。

3

爲了這個目的,我建議使用Zend Framework,因爲它是一個膠水框架。通過ZF,您不會被迫進入框架期望您如何使用它的束縛。你可以選擇你想要的,並用ZF的代碼逐漸替換你的遺留代碼。它也支持你提到的所有事情。

此外,我建議運行在phpqatools.org找到的各種QA工具來支持您進行調試和重構。

框架比較

+0

api穩定性如何?我聽說1.0和1.7之間有重大變化 – 2010-01-26 14:50:43

+0

1.0不再相關。目前的版本是1.9,目前正在測試的版本是1.10。 API是穩定的。當2.0在這裏時會有一些重大變化,但afaik還沒有ETA。 – Gordon 2010-01-26 15:24:50

+0

Zend可能是您最好的選擇,也是因爲(從我的理解,我現在正在比較框架),它不會要求您立即重寫所有的意大利麪條以符合其架構。在所有的框架中,Zend可能是允許緩慢轉換的最佳人選。 – 2010-01-26 15:28:39

相關問題