1

OOP についていくつか質問があります。私は上級ユーザーではありませんが、以前に経験したことがあるかもしれない問題に直面しています。

基本的に、MVC を使用して PHP プロジェクトを操作しています。クラスをできるだけ独立させようとしました。でもこれはかなり厳しいと思います。例えば:

クラス Car と User があります。ユーザーは車の情報を Web サイトに投稿します。おそらく販売するためです...

クラスUserには、基本的にユーザー情報を取得するためのgetUserがあります。

したがって、Car クラスでは、setCar、getCar、saveCar を使用できます。これらの車を表示するには、displayCars() を使用します。displayCars() では、getCar を使用して車のリストを取得できます。しかし、User::getUser を使用して、それらの車を送信したユーザーのユーザー情報を取得する必要がある場合もあります。ある意味、displayCars は User::getUser に依存しています。

それで、私はここで何をすべきですか?

4

2 に答える 2

1

この問題をモデル化するには、車とユーザーだけでは不十分です。概念的には、少なくとも次のものがあります。

  • 個々の車は、Carオブジェクトで表す必要があります
  • ユーザーは、Carオブジェクトの属性を設定する情報を入力します
  • CarオブジェクトとそのCarを送信したユーザーの両方がCarDBItemオブジェクトの属性になります
  • 次に、すべてのCarDBItemがCarDBオブジェクトに配置され、ユーザーが入力したすべての車を管理します。

もちろん、これは非常に単純化されています。実際にアプリケーションを作成するときは、これよりもはるかに多くのことがあります。しかし、これらの用語で問題を検討することから始めるのが良いと思います。

于 2011-03-05T04:42:38.660 に答える
0

あなたの混乱の一部は、OO と MVC が完全に異なる設計概念であり、実際には矛盾している可能性があるという事実から来ています。私は職場で同じ議論に直面しています。

たとえば、OO は、クラス自体のみがクラスの動作を認識し、他のすべてのクラスはそのインターフェイスとのみ通信する必要があると述べています。MVC は、ビジネス ロジックを保持する個別のクラスを使用して、ほとんど機能を持たないダム データ (モデル) オブジェクトを使用する必要があると述べています。

OO は、2 つのクラスが同様に機能する必要がある場合、基本クラスから共通の機能を継承するように指示しますが、MVC は通常、実際の機能を持つ他のクラスを呼び出すクラスの前にファサードを置くことを好みます。

2 つを組み合わせることができますが、同じ場所やレイヤーではできません。構成を使用して、他のモデルのスーパーセットであるモデル (データ オブジェクト) を構築したり、継承を使用して同様のコントローラーを作成したりできますが、これは注意して行う必要があります。

Web ベースのアプリケーションは MVC に適しています。他の人が指摘しているように、ガイドとして使用できる確立されたフレームワークがあります。

于 2011-03-05T05:05:28.167 に答える