0

頭が追いつかない問題があります。私はphpで独自のWebアプリフレームワークに取り組んでいます。良いものがたくさんあることは知っていますが、これをいじるのが好きで、機密性の高い制作には使用していません。

ここに問題があります。すべてのモデルに継承させたい関数を含む抽象基本クラスがあります。また、基本的な操作のための関数を使用して基本モデルを拡張する抽象基本コントローラーもあります。現在、作成されたすべてのモデルは基本モデルを拡張し、すべてのコントローラーは基本コントローラーを拡張します。そのため、すべてのコントローラーも Base コントローラーを介して Base モデルから継承されます。しかし、モデルはベースコントローラーを拡張し、モデルがベースコントローラーを拡張するのは奇妙に思えるため、モデルコントローラーからモデルプロパティにアクセスできなくなりました。

それぞれのコントローラーからモデル プロパティにアクセスできるようにするには、これをどのように設定すればよいですか?

ありがとう!

4

1 に答える 1

2
  • まず、モデルとは何かについてのあなたの理解が..まあ..悪いように思えます。たぶん、このコメントは少し役立つでしょう。

  • 間違っているように見えるもう1つのことは、全体像がこれです:

    そのため、すべてのコントローラーも Base コントローラーを介して Base モデルから継承されます。

    深い継承は避けるべきです。また、コントローラーWhat-You-Call-Modelはまったく異なる役割を担っているため、両方から継承されるものは何もありません。extendsは と同義であることを理解する必要がありますis-a

    と書いた場合class Admin extends User、それはすべての管理者がユーザーであることを意味します。これはまた、あなたが書いたときclass User extends Table、それが間違っていることを意味します(..そしてちょっと侮辱的です)。

  • コントローラーは、 what-you-call-modelからプロパティを読み取るべきではありません(代わりにMVPパターンを実装していないと仮定します)。その部分はViewで行う必要があります。これは、プレゼンテーション ロジックを担当する部分であるためです。

    そしてそのためには、あなたが呼ぶモデルには特定のゲッターが必要です。プロパティを直接公開しないでください (たとえば、それらを設定するpublicなど)。カプセル化を破ることになるためです。

.. 私の 3 セント

于 2012-06-10T19:28:15.820 に答える