2

同僚のチームと私は、レガシー アプリを Yii で書き直すことにしましたが、管理者は、すべての機能をそのままにしておく必要があるという厳格なポリシーを持っているため、Yii に移植されるまでは古いモジュールを使用する必要があり、これらのモジュールは書かれています。手続き的な方法で、それらのすべてに、一般的な index.php に含まれる php ファイルがあります。一般的な index.php は、次の 3 つのことを行います。

  • セッションを開始し、それに変数を追加します。
  • データベース接続を作成します。
  • 要求されたモジュールのメイン php ファイルをレンダリングします。

Yii を使い始めたら、古いモジュールをどのように使用できますか?

URL 管理を調べたところ、ロジックは非常に単純です。URL が古いモジュールと一致する場合は、renderFile()でレンダリングし、それ以外の場合は Yii に任せますが、これが最善の方法かどうかはわかりません。

プロセスを開始する前に、他に考慮すべきことはありますか?

URLManagement + renderFile() が適しているかどうか知りたいですか?

4

2 に答える 2

1

URL 処理は実際に使用できますが、構成が混乱するため、大量のルートを使用する代わりに、カスタム URL ルール クラスを単純に記述します。

別の提案が必要な場合:

まず、アプリの作成と実行を分割します

require_once($yii);
Yii::createWebApplication($config);

// If you want to run the app:
Yii::app()->run();

そうすれば、アプリが実際に実行されるかどうかを完全に制御できます。

DBに関しては。PDO を使用している場合は、幸運です。通常の方法で Yii に db コンポーネントを与えてから、general.php を変更して、Yii の PDO インスタンスを使用します (Yii::app()->db->pdoInstance)。それは常に後でロードされるので、うまくいくはずです。PDO を使用していない場合は、2 つの接続を使用してください。多くの訪問者がいない限り、それほど悪くはありません。

セッションに関しては、初期化はそれほど多くないはずなので、カスタム ハンドラがない限り、それも Yii に移動してください。機能自体は同じなので特に問題はありません。

次に、私が見ているように、物事を行うには2つの方法があります。

1) general.php が最初に実行されます。

レガシー ファイルでモジュールのリストを作成し、現在要求されているモジュールが移行されたかどうかを判断する必要があります。基本的に、まだ general.php にあるモジュール名を配列に入れ、URL がそれらのいずれかを必要とするかどうかを確認し、general.php を含めます (Yii::app()->run() を実行しないでください)。残りは Yii を経由します。

2) Yii が先です。

yii に魔法をかけてもらいますが、404 http 例外をインターセプトします。これは、カスタム エラー ハンドラ関数 (http://www.yiiframework.com/doc/guide/1.1/en/topics.error) を使用して簡単に実行できます。エラー関数が再び表示される場合: 有効なレガシー モジュールであるかどうかを判断し、general.php を含めます。

どちらの方法もかなり厄介ですが、少なくともこのようにして、1 つのモジュールを移行し、残りをレガシー ファイルに残すことができます。

于 2012-05-13T06:47:32.353 に答える
0

ソフトウェアに依存Size ,complexity and Person Monthsすることは、決定を下す上で重要です。homogeneousもちろん、自然よりも適用の性質を持つことは非常に望ましいことheterogeneousです。上記のモジュールを変換する場合は、Yii で RE-DO を実行する必要があることをお勧めします。なぜなら、Yii には強力なORMモジュールがあり、非常に簡単に作成できるからです。

私はあなたが行くべきであることをお勧めしますRE-Do

古い OOP PHP プロジェクトを Yii フレームワークに変換するにはどうすればよいですか?

于 2012-05-10T18:22:58.163 に答える