0

我有一個很大的代碼庫,我試圖最終轉換爲Zend-Framework動力堆棧。如何在同一個HTTP端口上的同一臺服務器上運行Zend Framework代碼和傳統(非ZF)代碼?

我有時候寫新的模塊,在那裏我有一個選擇:

  • 不斷編寫使用傳統的路由/初始化/等
  • 某種程度上弄清楚如何使用ZF的新模塊只,而其餘的遺留代碼的作品「和以前一樣」

這可能嗎? 如何?

爲了給你一個想法,我現在使用的專有多路由文件的代碼,其中ZF中的所有內容都通過一個路由器文件。

所以遺留代碼被稱爲像這樣即:

http://legacy:80/index.php?route=product 

可能類似於zend framework 2 in a subdirectory

Zend的中間件方法

我能夠跟隨https://docs.zendframework.com/zend-mvc/middleware/和實施IndexMiddleware類。我可以看到IndexMiddleware::process()方法正在被調用。但我不確定如何走得更遠,以及如何讓我的遺留Web應用程序像以前一樣返回數據。 MiddlewareListener。

遺留應用程序 - 的index.php

$module = filter($_GET['p']); 
if (!empty($module)) 
    $inc = 'portal/{$module}.php'; //prep a legacy module 
require($inc); //run module 

回答

1

解決方法有很多有...取決於你有多少新的代碼都有,你想要的地址。長期以來,您可以在服務器級別(aliasesrewrite等)或PHP代碼級別工作。

你可以做的事情是使用Zend Skeleton的index.php,例如通過index.php默認的URL路由。然後看看application lifecycle, especially the route event。我相信這是添加一個偵聽器來發送舊應用程序的好處。您可以在Zend MVC code中找到多個監聽器,以便將您的代碼基於(例如查看中間件)。

+0

嗨,謝謝 - 我能夠取得一些進展,我創造了一箇中間件攔截器(通過以下https://docs.zendframework.com/zend-mvc/middleware/),但我不知道如何使用'MiddlewareListener'。你能夠建議如何或在何處將它連接到ZF應用程序? – Dennis

+0

儘管我在我的主應用程序的相同目錄中設置了我的ZF應用程序,但我可能會更好地使用新的子文件夾,並通過apache虛擬主機以某種方式在該子文件夾中運行zf2。這樣,傳統和zf應用程序不會直接相互干擾。我現在擁有它的方式,我不確定是否/如何使用Zend通過中間件應用程序過濾遺留應用程序的所有HTTP請求/響應(也就是說,如果我必須定義我自己的迷你HTTP引擎在中間件內部,按原樣維護舊版應用並放棄中間件方法可能會更簡單) – Dennis

+0

您是否可以像在舊版projet中一樣使用'index.php'的簡化示例來更新您的文章?所有的請求都通過索引嗎?如果是的話,你可以在那裏做一個預先調度,而不是在中間件中。 另一個解決方案(有兩個獨立的項目)可以完成,但爲了幫助您,我需要知道您是否使用Nginx,Apache或其他。舊版應用中的 –

相關問題