ホームページ  >  記事  >  バックエンド開発  >  thinkphp のモデル層に関する質問

thinkphp のモデル層に関する質問

WBOY
WBOYオリジナル
2016-06-23 13:20:011097ブラウズ

このフレームワークをしばらく使用していますが、ビュー層とコントローラー層だけを使用したことがあり、モデル層は実際の開発で何に使用されるか知っている人はいますか?

返信 ディスカッション (解決策)
モデル (model) は、アプリケーション内のアプリケーション データ ロジックのアプリケーションの一部です。

通常、モデル オブジェクトはデータベース内のデータへのアクセスを担当します。


モデルは、アプリケーションのデータのロジックを処理するアプリケーションの一部です。

通常、モデル オブジェクトはデータベース内のデータへのアクセスを担当します。


しかし、データベースへのアクセスはすべてコントローラー内で行われます。たとえば、以下のコントローラー内のコードは、以下の一部をモデルに封入することが合法であることを意味します。

    public function goodsPage(){        $table_goods=M('goods');        $goods_id=I('param.id');        $info_where['id']=$goods_id;        $goods_info=$table_goods->where($info_where)->field('id,name,price,type,img,detail_img1,detail_img2,detail_img3,number,supply')->select();        $this->assign('info',$goods_info);        $this->display();    }



Model は、アプリケーション データのロジックを処理するアプリケーションの一部です。

通常、モデル オブジェクトはデータベース内のデータへのアクセスを担当します。



しかし、データベースへのアクセスはすべてコントローラー内で行われます。たとえば、以下のコントローラー内のコードは、以下の一部をモデルに封入することが合法であることを意味します。

    public function goodsPage(){        $table_goods=M('goods');        $goods_id=I('param.id');        $info_where['id']=$goods_id;        $goods_info=$table_goods->where($info_where)->field('id,name,price,type,img,detail_img1,detail_img2,detail_img3,number,supply')->select();        $this->assign('info',$goods_info);        $this->display();    }

はい、標準の mvc はこんな感じです。

上記のコードのように、それをモデルにカプセル化する方法を教えていただけますか、ありがとうございます まず第一に、MVC には標準がありません。それは、ほとんどの人の物事の理解を反映しているだけです

次に、M、V はありませんMとCの明確な分業なので、MかCに固執しすぎる必要はありません

MVCの一般的な説明によると、Webサイト開発では、MとV、Cで作業を完了する必要がありますはほとんど何の関係もありません (特に複数のエントリの場合) アーキテクチャ)
最新のフレームワークでは、M はデータベース操作の役割を果たします。実際、ビジネス ロジックの一部は C で完成しています

次のアクション コードを書いて動作するかどうかを確認してください:

 public function goodsPage(){       $goods=D('Goods');       $goods_info = $goods->foo();        $this->assign('info',$goods_info);        $this->display();    }

モデル フォルダーに GoodsModel.class.php ファイルを作成します
コードは次のとおりです:

<?phpclass GoodsModel extends Model{    public function foo(){       $table_goods=M('goods');         $goods_id=I('param.id');         $info_where['id']=$goods_id;         $goods_info=$table_goods->where($info_where)->field('id,name,price,type,img,detail_img1,detail_img2,detail_img3,number,supply')->select();       return $goods_info;   }}


一覧表示ページとエクスポート Excel 関数を作ると
モデルを書かないと 2 つの関数で同じ選択データを 2 回書かなければなりません
モデルを書けば 2 つの関数で 1 つのモデルを呼び出すことができます

あなた多くの内容を保存し、記述量を減らすことができます。 大量のコードも将来の修正に便利です。top.html と footer.html を html と共有するのと同じ理由です。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。