1

Zendフレームワークは非常に急速に成長しており、私たち全員が同意し、Zend Frameworkのモジュラー構造を試してみて驚いていました。具体的には、モジュールのブートストラップです。モジュールのすべてのブートストラップファイルは、最初に実行されます。そのモジュールを使用/アクセスしているかどうか。私が覚えている限り、モジュールのブートストラップはメインのブートストラップへのプラグインのように実行されます。しかし一方で、ZFの実装は非常に洗練されており、デザインパターンを尊重して書かれています。

したがって、Module Lazy Load / Bootstrapに移動してつまずく前に、ブートストラップの側面について客観的に考えてみたいと思います。

--ZFの最初のモジュールブートストラップには、その背後にある堅固なロジックがありますか、それともレイジー/オンデマンドブートストラップのようなものに変更する必要がありますか?

私は質問がかなり暗黙的であることを知っているので、もう少しあげさせてください

たとえば、モジュラーアプリでは、モジュールごとに個別の初期構成(個別のレイアウトなど)が必要であり、ブートストラップは「初期構成を行う場所」のパラダイムですよね?しかし、Zend Documentationが言うように初期化/構成を配置すると、アプリケーションは、すべての要求に対してすべてのモジュールブートストラップクラスで設定されたすべての初期化をロードします(私は単なるゲストであり、管理者ブートストラップを要求すると、それでもバックグラウンドで実行されますが)-システムをかなり破壊しています。

私が見る限り、アイデアが流れるには2つの方法があります

  1. システム全体を補完するだけのブートストラップをモジュールに含める(それが何であるかはほとんどわかりません)
  2. ヘルプアクションプラグインを使用してモジュールをブートストラップする方法を変更するか、マデュールブートストラップのブーストラップを処理するBootstrapクラスを拡張します。

そして、私の最初の質問は、最初のオプションに従うロジックはありますか、そして2番目のオプションは良い選択になるでしょうか?

4

1 に答える 1

1

はい。これは、ディスパッチプロセスに基づいています。ブートストラップ時にどちらが必要かわかりません。モジュールブートストラップには、メインブートストラップにモジュールコードを挿入する必要がないという1つの利点があります。これにより、モジュールがより「自己完結型」になります。

モジュールはに依存します

  • リクエスト
  • 選択したルート
  • 例の場合。_forward()が呼び出されました

ただし、モジュールごとにルートを追加したり、独自のディサッチャーを挿入したりすることもできます。これはすべて、リクエストオブジェクトを作成する前に行う必要があります。そのため、最初にすべてのブートストラップが開始されます。

理想的なケースでは、ブートストラップに繰り返しコードが含まれたり、深刻なオーバーヘッドが追加されたりしないようにする必要があります。他の開始されたブートストラップからリソースを取得できるため、dbアダプターやビューなどのオブジェクトのコピーはありません。

于 2010-02-24T23:01:13.337 に答える