私は今、これらのいくつかを行いました。私にとって最も効果的だったのは、古いアプリの周りに 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...
}
}
}
リクエストを古いアプリに送信する正確な方法は、実装方法によって少し異なります。あるプロジェクトでは、リクエストを調べて、古いコードのどのファイルにリクエストが送信されるかを判断し、それを要求しました。別のプロジェクトでは、これらすべてのリクエストを ZF プロジェクトの LegacyController にルーティングし、古いコードを実行して結果の HTML を取得し、それを新しいプロジェクトの Zend_Layout 内にレンダリングしました。
このアプローチの利点は、要求の 100% を ZF が処理できるようになるまで、古いアプリの一部を書き換えながら ZF モジュールを徐々に導入できることです。また、古いコードが実行される前に ZF プロジェクトが初期化されるため、古いコードは ZF オートローダを使用できるため、古いコードのクラスをより ZF スタイルで記述されたモデルに置き換えて、それらを両方で使用することができます。アプリの一部。