2012-11-16 106 views
25

我必須將應用程序從Zend Framework 1.12.0遷移到版本2.似乎有no migration guides yet。我已經研究過ZF2編碼約定,並且我採用了依賴注入(Zend \ Di)和PHP 5.3命名空間。我的目標是將我的ZF1應用程序重構爲ZF2模塊。從Zend Framework 1逐步遷移到2

問題:是否有可能進行一步一步與至少部分運行的應用程序的每一步避免巨大的重構步驟?如果是,那麼步驟是什麼?

這裏是我這樣的一步一步遷移的想法,但如果我最終每個步驟之後,運行的應用程序,我不知道:

  1. 開始通過設置ZF2 Skeleton Application
  2. Set up a new module(MyApp)並將我的ZF1應用程序的內容重新組織到MyApp模塊文件夾結構中。然後設置非常基本的配置和引導,並通過從ZF2 AbstractActionController擴展它來遷移IndexController。模型(Zend_Db)和視圖(Zend_View)將在稍後進行遷移。這裏的目標是有一個工作的IndexController :: indexAction,它沒有很多的依賴關係。
  3. 設置更多配置和引導(路由,翻譯,語言環境,緩存,Db,Acl,ViewHelpers等)。我想先設置這些組件的ZF1版本,然後逐一遷移它們。
  4. 遷移其他控制器,並使用Zend \ Di或using the ServiceManager設置依賴注入到控制器。
  5. 通過使舊的phing腳本與新的目錄結構一起工作來設置自動部署。
  6. 將視圖(包括助手)和表單遷移到ZF2。
  7. 遷移模型(從Zend_Db到ZF2 Zend \ Db或到Doctrine)。
  8. 逐個遷移其他ZF1組件(Translate,Locale,Cache,Acl,...)。
  9. 重構康復和長假。

但是,只有當某些ZF2組件與ZF1組件一起工作時,每一步之後我都會有一個workin應用程序。我不知道它是否是例如使用ZF2控制器可以使用ZF1視圖(和視圖助手)。

+0

您實際上可以將ZF1和ZF2並排工作,因此可以使用更小的步驟。最大的問題是重新組織你自己的項目。我認爲一個ZF1 App USUALLY不止是一個模塊。你幾乎對你有一個很好的理解,你的出發點是好的。遷移是一件棘手的事情,通常最終會重構幾乎所有的東西:P – Sam

+2

將ZF2視爲您想要遷移到的全新新框架。我敢打賭,你需要重寫整個你的應用程序... – shadyyx

+0

不要以爲你會找到一個移民指南。我認爲你將不得不重寫你的ZF2應用程序 – Andreas

回答

8

遷移從Zend框架1

本指南旨在爲從Zend框架1遷移到Zend框架提供的工具和策略2,沒有單一的解決方案,將每個項目的工作,也任何工具來自動化過程。

在本指南中,我們將涵蓋以下內容:

  1. 工具命名空間代碼。
  2. 在您的Zend Framework 1應用程序中使用Zend Framework 2的工具。
  3. 平行運行Zend Framework 2和Zend Framework 1的策略。
  4. 使您的代碼更易於遷移的策略,主要側重於乾淨分離您的域邏輯和MVC層。
  5. 遷移MVC圖層的策略。
  6. 策略遷移您的域圖層。

http://framework.zend.com/manual/2.1/en/migration/overview.html

+0

我自己還沒有做過(但),但至少它是從官方來源。如果我完成了(成功),我會更新它。 – electblake

7

某處有人寫一次,這將是易peasy一些中間層,但我從來沒有見過的,看上去只是遠程喜歡它的庫中的任何鏈接或任何東西。

現在您可以在文檔的Overview頁面找到唯一的和最新的信息。它是這樣的:

注意由於框架實現了PHP 5.3+中的新功能,並且由於大量重寫了許多組件,所以ZF2不與ZF1向後兼容。

我從未想到它是向後兼容的,但這裏的關鍵語句,我相信是主要重寫許多部件

幾個月前,我已經開始使用ZF2開發一個新項目,在那裏我只需要圖書館;所以沒有MVC這應該很容易,對吧?到目前爲止,這幾乎是一場噩夢,因爲現在什麼都沒有了。除了一些熟悉的類名或結構之外,整個框架已經完全從頭改寫。

我喜歡的東西,用過很多東西,並且像形式,緩存或會話一樣,都是完全不同的。對於我的項目來說,花費我很多時間,沒有任何好處。我認爲ZF2的一個關鍵對象是徹底改變了這些寫作方式比以前更糟糕的文檔。

對於我的其他現有ZF1.x項目,我沒有看到如何管理升級,除非完全重寫應用程序。

+0

ZF2的主要優勢在於它的模塊化。您不必像ZF1那樣重寫所有內容。最初的目標是提供ZF1和ZF2之間的中間層,但目前情況並非如此,坦率地說,我懷疑將會出現這種情況。 – Sam

+0

@Sam不知道你爲什麼認爲ZF1不是模塊化的;這是一個圖書館,因此它必須是模塊化的。我很少需要在ZF1中重寫任何內容。 OP的問題不在於ZF2與ZF1 –

+0

我在評論你的帖子,我沒有把它作爲ZF1與zf2的辯論:)而對於模塊化的我討論的是zf1-應用 - 那些不是模塊化的。框架本身是很高的程度;) – Sam

1

Zend Framework 2 FAQ

我與Zend框架1構建的應用程序 - 我將能夠將其遷移到新版本?

絕對。 Zend Framework 2的一個重要組成部分是遷移層,它將允許ZF 1代碼在新的ZF 2引擎上運行,並將在未來推出。有了它,您將能夠以受控的速度添加新的ZF 2代碼,並重構現有代碼。

但是,在這一點上,我還沒有聽說過任何實際的遷移層。我們只能希望會有,但在這一點上,我有我的懷疑。

1

我們已經在過去一年中從Zend框架1的大型應用程序遷移到Zend框架2。我們從簡單的東西開始,比如命名空間,然後慢慢地進入各種庫組件。最終,我們最終編輯Zend_LayoutZend\Filter,Zend_Form一起工作,與Zend\FilterZend\Json,Zend_Navigation一起使用,與Zend\Permissions\Acl等一起工作等。這有助於我們消除幾乎所有ZF1組件,但ZF1應用結構除外,其中包括四個類Zend_ApplicationZend_Config,Zend_ControllerZend_Layout。拼圖的最後一部分是Zend\Mvc\ApplicationZend\View的執行,其餘部分是ZF2就緒。

最近,我們創建了一個排序代理來掛鉤來自ZF1的Zend\Mvc\Application和ZF2模塊。這一直是極端有幫助。我詳細介紹了http://webjawns.com/2013/11/migrating-to-zf2-integrating-composer-and-doctrineormmodule/的步驟。

總之...

  • 轉換前綴命名空間(Model_Model\Application_ControllerApplication\Controller等)
  • 與ZF2同行,包括自動加載磁帶機更換非MVC組件
  • 創建ZF2應用結構和掛鉤開始使用ZF2模塊
  • 移動控制器和視圖(仍在制定此計劃)