これまでいくつかのことを行ってきました。私にとってうまくいったのは、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スタイルで記述されたモデルに置き換えて、アプリの一部
非常に巧妙なアプローチ。 – RockyFord
+1また、http://www.chrisabernethy.com/zend-framework-legacy-scripts/を参照してください。同様のアプローチを詳述している。特に、ZF .htaccessのルールを既存の.htaccessに追加するだけで、簡単に(ほとんどの場合)マイグレーションを行うことができるというAndrewの反対意見に注目してください。私はプロジェクトで今これをやっていて、うまくいきます。 –