1

時代遅れになりつつあるように、グローバルを使用する非常に古いレガシー コード ベースがあります。ほとんどすべてのページ間通信は、グローバルとセッション、またはその両方を介して行われます。これは最後の手段として変更できますが、理想的には、私が触れるすべてがより多くのバグを導入する可能性があるため、それに触れたくありません:-p.

とにかく、新しい「モジュール」をアプリケーションに組み込みます。このモジュールは完全に zend で作成され、非常に優れたモジュラーです。私の目的は、zend をバックボーンとして実行し、古いレガシー コードを zend 内の一種のモジュール/コントローラーとして実行し、制御を取得したら、通常どおり実行して、必要なことを実行することです。

私が持っている2つの問題:

  • レガシー URL (login.php、show.php など) を使用していることを Zend に確認させ、実行を特定のコントローラーに渡す必要があります。

  • アプリケーション全体を別の関数内に埋め込んでいますが、これにより、グローバル スコープにグローバルとして表示される変数のデフォルトの動作が壊れます。つまり、それらは現在、このメソッドの単なるローカル変数であるため、最初にそれを指定しないと表示できません。それらはグローバルです。

これを行うことができる別の方法があれば、私はそれを聞いてうれしいです:-p

乾杯、
クリス

4

3 に答える 3

2

最初の問題については、Zend_Router クラスを使用できると思います。

しかし、手続き型アプリケーションをオブジェクト指向の ZF コンセプトに移植することは良い考えではないと思います。

アプリケーションを書き直すか、個別のクラスをルーズ コンポーネントとして使用するかのどちらかです。これは、ZF の作成者も推奨しています。

于 2009-06-09T11:18:38.203 に答える
1

レガシー コードベースについては、APACHE rewrite rulesを利用することをお勧めします。通常、zend フレームワークは次の行に沿って書き直されています。

  <Location />
        RewriteEngine On
        RewriteCond %{REQUEST_FILENAME} -s [OR]
        RewriteCond %{REQUEST_FILENAME} -l [OR]
        RewriteCond %{REQUEST_FILENAME} -d
        RewriteRule ^.*$ - [NC,L]
        RewriteRule ^.*$ /index.php [NC,L]
    </Location>

代わりに、「index.php」を「ZendFramework.php」など、現在使用されていないものに変更してください。通常のコンテンツ (APPLICATION_ENV、APPLICATION_PATH、ブートストラップなどを定義) をこの ZendFramework.php ファイルに入れます。

これで、サーバーは以前と同様にすべての既存のレガシー コードを提供しますが、存在しないパス (/module/controller/action など) を Zend にルーティングします。レガシー コードベースによっては、パスに衝突が発生する可能性があります。モジュール/コントローラー/アクションとカスタム ルートに名前を付けるときに、それに対処する必要があります。時間が経つにつれて、レガシー コードを ZendFramework モジュールに移行できます。

        RewriteRule ^.*$ /ZendFramework.php [NC,L]
于 2012-05-10T18:06:14.687 に答える
0

私はあまりにも野心的でした。

新しい「モジュール」は、ほとんどが JavaScript であり、大量の ZF によってバックアップされた小さな PHP コントローラー (CRUD) であり、私が本当に移植したかったのは JS フロントエンドだけであることに気付きました。 .

単純に JS フロント エンドを移植し、以前と同様のインターフェイスを提供するだけにしました。Zend について心配する必要はなく、レガシー アプリの代替機能をコーディングするだけです。

わーい。

不思議なことに、お茶を淹れながら砂糖をカップに入れているときに気づきました。スプーンをカップに移動する代わりに(砂糖の瓶からどこにでもこぼします(つまり、書き直すコードがたくさんあります))、両方をカップの上に移動し、下から砂糖の瓶を取り除きます-少ない量で同じ結果が得られます混乱、砂糖はJSで、Jarは大きなZFフレームワークでした:-p

于 2009-06-10T14:57:42.553 に答える