Zend Frameworkのモジュールとモデルの組織2
-
27-10-2019 - |
質問
ZFモジュールとモデルの構造についていくつか質問があります。
(ZF 1.11をあきらめたので、私はZF 2について話している)
私の質問を簡単に理解できるようにするには、次の例をご覧ください。(ZF2を学ぶためだけにこれを作成します)
「映画マネージャーアプリケーション」です。このアプリケーションには、3人のユーザーがいます。
- visitors: peolple who olny can see the movies in the database.
- members: same as visitors plus insert, update and delete movies.
- administrator: same as members plus insert, update and delete users and other informations as genre, artist, ...
メンバーは新しい映画以外に何も挿入できません。つまり、新しいジャンルを挿入することも、新しいアーティストも挿入することはできません。
わかりました...この問題については、この解決策を見つけました。
- create 3 modules: visitor, member, admin;
しかし、それがDEプログラムを整理する最良の方法かどうかはわかりません...
ZFは、人々がこのようにアプリケーションを整理することを期待していることを理解しています。
- create modules for each funcionallity;
- create roles for each kind of user;
だから、私の質問は次のとおりです。
1. My solution is right or wrong?
2. If my solution is right, how can I organize my application?
3. How can I organize my models, to be visible to more than one module?
- I think a should create a model "movie" somewhere if "inserts, updates, deletes, and selects"
then a module "visitor" could only use a "select" while a module "member" could use all the funcionallities. Am I right?
4. If my solution is not right, how can I organize my application?
5. How should be my modules?
私は本当にこの問題に固執しました。どこにも答えが見つかりませんでした...誰かがこのような少しのアプリケーションを持っていて、あなたが共有することを気にしないなら、私は喜んでいます。
私の質問が明確でない場合は、聞いてください!
ご協力ありがとうございました。
解決
ここで見るのはデータベースモデルです。したがって、私にとっての主な問題は、データの管理方法です。 MVCパターンでは、モデルを使用してデータを管理します。ここで私が言うことができる限り、あなたの質問はZF2に関連したり、限定されるべきではありません。以前のバージョンと同様に、データベースとデータテーブルを管理するモデルが必要です。
モジュールはアプリケーションの側面を処理します。データ(人、ジャンル、ユーザー、映画)の強固なモデルがある場合、モデルにアクセスする多数のモジュールを作成できます。したがって、さまざまな目的でたくさんのモジュールを持っているが、常に同じモデルを持つことができます。
ユーザー管理のみを処理するモジュール、映画のみを管理(追加)するモジュール、もう1つは映画のみをリスト(読み取り)などにすることができます。
他のヒント
これのほとんどは、「MovieManager」と呼ばれる1つのZF2モジュールで行うことができると思います。映画と人は、MovieManagerモジュールの名前空間内のモデル(つまり、ベースクラスとデータベーステーブル)になる可能性があります。
ユーザーは、ユーザー認証とアクセス制御を処理するための別のモジュールになる可能性があります。 Evan Couryが再利用可能なZF2ユーザーモジュールで行った作業を見てみましょう。 https://github.com/zf-commons/zfcuser または、それをシンプルに保ち、ユーザーモデルをMovieManagerモジュール内に配置することもできます。
Zend_aclを使用して、特定のユーザーが実行できる操作を定義します。または、ユーザークラスに基本的な「役割」プロパティを持ち、MoviEMANAGERコントローラーで許可された役割をチェックすることで、それをより簡単に行うことができます。