3

マニュアルにある Zend Framework モジュラー アプリケーションのデフォルト ディレクトリ構造を認識しています。

/application
  /controllers
  /modules
    /admin
      /controllers
      /views
  /views
  /configs
/www
  index.php

しかし、どうしてこんなことをしなければならないのか不思議です。デフォルトのモジュールを/applicationに、他のモジュールを/application/modules/:moduleNameに置くのは本当に便利です。これは、ヘルプの質問というよりも、ディスカッションの質問です。

このようなディレクトリ構造を持つことの長所と短所は何ですか:

/application
  /modules
    /admin
      /controllers
      /views
    /default
      /controllers
      /views
  /configs
/www
  index.php

私の見解では、唯一の欠点は、デフォルト/マニュアルでこのように記述されていないことです。他には見えません。何か不足していますか?

さらに、この構造は新しい ZF アプリケーションのデフォルト構造であるべきだと思います。なぜ Zend 開発者はそれを使用しないのだろうか。

4

5 に答える 5

5

実際、提案されたディレクトリ構造は、大規模で複雑なアプリケーションに適しています。

今日の世界最高のオープンソースeコマースソリューションであるMagentoは、Zendフレームワークでコーディングされており、提案したものと同様のディレクトリレイアウトを使用します。これにより、新しいモジュールの拡張と追加、古いモジュールの管理が非常に簡単になります。

繰り返しますが、単純なアプリとZendの学習については、デフォルトのディレクトリ構造に固執することをお勧めします。

于 2010-03-04T14:05:27.923 に答える
4

実際、これはhttp://framework.zend.com/manual/en/zend.controller.modular.htmlで詳しく説明されているオプションの1つです。

あなたのやり方はうまく聞こえますが、ZFのポイントは、自分で物事を管理する方法を選択できることです。1つの利点は、コードがわずかに少ないことです。Zendのデフォルトのアプローチでは、これを使用する必要があります。

$front = Zend_Controller_Front::getInstance();
$front->addControllerDirectory('/path/to/application/controllers', 'default');
$front->addModuleDirectory('/path/to/application/modules');

一方、あなたが説明するアプローチでは:

$front = Zend_Controller_Front::getInstance();
$front->addModuleDirectory('/path/to/application/modules');

は、あなたが必要とすることすべてです。

Zendのアプローチの利点の1つは、モジュールが必要ない場合、addModuleDirectory()メソッドを実行する必要がないことです。あなたのアプローチでは、これを常に実行する必要があり、小さなオーバーヘッドが発生する可能性があります。

このページhttp://framework.zend.com/manual/en/project-structure.project.htmlには、デフォルトのコントローラーディレクトリが「アプリケーションディレクトリ内にある」と記載されており、単純なプロジェクトの開始とモジュラープロジェクトの開始に最適なレイアウトが提供されます。グローバルコントローラー/モデル/ビューがあります。」

Zendの見解では、これはデフォルトのモジュールのみを備えた単純なサイトと、複数のモジュールを備えたより複雑なサイトの両方で機能すると思います。モジュールがmodules/ディレクトリにあることを確認するのは難しくありません。しかし、結局のところ、それは個人的な好みです。

于 2009-10-02T11:30:55.347 に答える
4

この方法は次の理由によると思います。

  • アプリケーションにモジュールがない場合に使用されるデフォルトの構造があります (つまり、デフォルトのモジュールのみ -- つまり、「デフォルト」ディレクトリは必要ありません)。
  • そして、モジュールを追加できます。既存の構造を変更する必要はありません。

それは他の説明と同じくらい良い説明だと思います。


それでも、いくつかのモジュールを含むアプリケーションを開発し、最初からこれを知っている場合、デフォルトのものではなく、提案されている種類の構造を使用するでしょう^^

私の意見では、その方が物事はより明確になるでしょう-そして、私はそれで何の問題も見ません!

(実際、私はかなり前に一度そのようにしましたが、何の問題もありませんでした-しかし、これは「完全な」アプリケーションではありませんでした;よりプロトタイプです...)

于 2009-09-12T20:09:23.740 に答える
1

私は同じ問題に苦しんでいます。しかし、私はこれを適切に設定することに成功していません...なぜこれを使用したいのかというと、Zen_Application と組み合わせたモジュラー構造が /application/module/name/forms (およびコントローラー、ビュー、モデルなど...) 自動的に。

私が抱えている唯一の問題は、「デフォルト」モジュールを取り除くことです:S

Zend Forums でトピックを見つけることができます: http://forums.zend.com/viewtopic.php?f=69&t=2394&start=0

うまくいけば、それは答えられるでしょう、またはここに投稿します。

于 2009-09-15T12:33:20.273 に答える
1

ここで目的のアーキテクチャを見つけることができます: http://www.osebboy.com/blog/zend-framework-modules/

于 2011-04-26T09:37:15.360 に答える