2012-04-01 9 views
0

私はMVCモジュール構造で作業しています.Zend(Zendを使用していない)のようなものです。次のようなディレクトリ構造は次のとおりです。モジュラーフォルダー構造の使用?

/www 
    /Config 
    /Modules 
    /default 
     /controllers 
     indexController.php 
     loginController.php 
     /models 
     /views 
    blog 
     /controllers 
     indexController.php 
     /models 
     /views 
... 

私はこのような構造についていくつか質問があります。私は "default"フォルダにloginControllerを持っています。明らかに、ユーザーはそのページにログインしてログインします。

ログインしたユーザーは、ブログにsometingを投稿できます。しかし、これが私の問題です。異なるモジュールがユーザーデータなどのデータをどのように共有できますか?

このシナリオでは、「デフォルト」モジュールはまた、「userModel」を持つことになります。しかし、ブログには「最新ユーザー」のリストも表示されます。したがって、どうにかして "default"モジュールの中にあるuserModelにアクセスする必要があります。

そして、私はあるモジュールが別のモジュールのデータを必要とするより多くの例を考えることができます。

しかし、これは「モジュール」は、ほとんどの場合のように他のモジュールに依存していることを意味しています。だからこそ私はこの構造に何の使用も見ません。または私はここで何か間違っているのですか?

+0

他のモジュールのモデルにアクセスできないという考えがありますか? Generealでは、あなたの訪問者のために1つのユーザーテーブルと1つのセッションしか持たず、それらのオブジェクトはどのモジュールでもアクセス可能でなければなりません。 – Basti

+0

@Bastiまあ、私は 'モジュール'はスタンドアロンのものにすべきだと思った。あなたが同じフレームワークで作業していたとします。自分のアプリケーションから 'モジュール'を使用すると問題はありません。しかし、あるモジュールが別のモデルに依存する場合(あるモデルにデータを照会する場合など)、この構造の使用方法は何ですか?私は上記のようにすべてを分けるのではなく、 "コントローラ"、 "モデル"、 "ビュー"のフォルダ構造を使用することもできます。 – w00

+0

モジュール間の依存関係は問題ではありません。 – Basti

答えて

1

私は実際にあなたがモジュールに書いたものを正確に再考するでしょう。:(混乱..モジュール、モデル、モデル、モジュール、モジュールのモデルも..あなたの命名規則を吸う)モデル層から

構造が異なるは、モジュール間で共有されなければなりません。モジュールは、相互作用に関連する部分をパッケージ化するためにそこにあります。

ドメイン・ビジネス・オブジェクトが「記事」を表すと連携

は、ロジックは、魔法のモジュールからモジュール変更されません。代わりに、各ユーザーがそれで何ができるのかには限界があります。ユーザーがコマンドを実行する権限を持っているかどうかによって異なります。

コントローラーのレベルで認可に関するより集中、同じアイデアがドメインオブジェクトに適用することができながら、あなたは...このSO topicを読んで恩恵を受ける可能性があります。

また、あなたは慎重にGUI ArchitecturesにM.ファウラーの記事をお読みください。

0

「モジュール」のアプローチは、ここでは適合しないようです。 MVCには、モデルビューとコントローラという3つのエンティティしかありません。あなたが述べたように

コントローラは、例えば、任意のモデルをロードすることができますpost_controllerので、それはそのようになりましょうモデルポストユーザーの両方を必要とします。モデルはデータを表すため、同じことを行う2つのユーザーモデルを持つことは間違いです。

それはあなたがするときは、すべてのアプリケーションを介してのクラスおよび/またはコードを繰り返し始めることに気づくアンチパターンであるので、だから私は、モジュールアプローチを取り除くでしょう。