1

今日、職場で誰かが私に次のように説得しようとしました。

{$obj->getTableInfo()}

オブジェクト メソッドを使用しているため、smarty/mvc/templating では問題ありません。私は、データベースを呼び出すため、そこに存在する場所がなく、コントローラーにある必要があると主張しました (実際には MVC を使用しません)。MVC および一般的にテンプレート化で使用される論理的な分離について、私の理解は正しいでしょうか? それとも、私が見逃しているものがありますか?

4

3 に答える 3

5

あなたが正しい。彼は間違っている。

MVCを正しく実行したい場合は、データベース呼び出しは、どのような形式であっても、コントローラーに存在する必要があります。

明らかに、人々は本来あるべき姿に腹を立ててそのようなことをしますが、それは正しい方法ではありません。

于 2009-05-05T03:21:06.430 に答える
1

まあ、「公式」のルールなどはありませんが、コントローラにそのようなものが属していると思います。ビュー コードでは、表示変数以外は何も実行しません。ifまたはforeach-type ループよりも複雑なものは許可されません。確かに、データベースにアクセスする関数を呼び出していません。それはすべてコントローラーによってロードされるべきであり、ビューはそれを表示する必要があるかどうかのみを決定する必要があります。

于 2009-05-05T03:20:48.410 に答える
0

実際にはそのコンテキストと範囲に依存します。

$obj はコントローラーですか、それともモデル レイヤーですか? 私の意見では、それが有効かどうかに答える必要があります。

他の回答を読んだことに応じて。

関数名自体は、単純な getter メソッドであることを示しています。コントローラーレイヤーを介してデータベースを呼び出す場合があります。私が言うことは大丈夫です。特に、メモリ内で何らかの形式のキャッシュを使用している場合。(つまり、一度使用したときにのみキャッシュする必要があるため、ゲッターはセッターです。)

于 2009-05-05T03:23:47.233 に答える