2012-05-04 3 views
2

私たちは、PHP WebappをZend Frameworkを使用するフレームワーク(私たちを殺している)を使用しないものから変換することを考えています。アプリケーションのサイズのため、ゼロから始めることは管理のための実行可能なオプションになるとは思わないので、現在のサイト構造からZend Frameworkを使ってゆっくりとどのように変換するのかを研究したいと思っていましたが、このプロセスに関する多くの情報BrownfieldのPHP WebappをZend Frameworkに変換する

これまでの計画では、現在のコードベースをZendアプリケーションのpublic /ディレクトリにダンプし、多数の問題を修正してから、これを一度に1つずつ書き直すようにしています。

誰も過去にこれをやっている経験がありましたが、どのようにあなたのためにうまくいったのですか?

答えて

6

これまでいくつかのことを行ってきました。私にとってうまくいったのは、ZFを古いアプリの周りに置くことだったので、すべてのリクエストはZFを経由します。私はその後、要求はZFで満たすことができるかどうかをチェックする「レガシー」コントローラプラグインを持って、とされていない場合、古いアプリに送信します:あなたは、あなたの古いアプリにリクエストを送る方法を正確に

class Yourapp_Plugin_Legacy extends Zend_Controller_Plugin_Abstract 
{ 
    public function preDispatch(Zend_Controller_Request_Abstract $request) 
    { 
     $dispatcher = Zend_Controller_Front::getInstance()->getDispatcher(); 
     if (!$dispatcher->isDispatchable($request)) { 
      // send to the old code... 
     } 
    } 
} 

どのように実装されているかに依存します。 1つのプロジェクトでは、リクエストを調べて、リクエストがあったはずの古いコードのファイルを特定し、次にそれを要求しました。これがあなたのために適切かもしれないように聞こえます。別のプロジェクトでは、私の解決策は、これらの要求をZFプロジェクトのLegacyControllerにルーティングすることでした.ZFプロジェクトでは、古いコードを実行して結果のHTMLを取得し、新しいプロジェクトのZend_Layoutにレンダリングしました。

このアプローチの利点は、要求の100%がZFによって提供されるまで、古いアプリの一部を書き換えるときに徐々にZFモジュールを導入できることです。また、古いコードが実行される前にZFプロジェクトが初期化されているため、古いコードではZFオートローダを使用できるため、古いコードのクラスをよりZFスタイルで記述されたモデルに置き換えて、アプリの一部

+0

非常に巧妙なアプローチ。 – RockyFord

+0

+1また、http://www.chrisabernethy.com/zend-framework-legacy-scripts/を参照してください。同様のアプローチを詳述している。特に、ZF .htaccessのルールを既存の.htaccessに追加するだけで、簡単に(ほとんどの場合)マイグレーションを行うことができるというAndrewの反対意見に注目してください。私はプロジェクトで今これをやっていて、うまくいきます。 –

関連する問題