質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MVC

MVC(Model View Controller)は、オブジェクト指向プログラミングにおけるモデル・ビュー・コントローラーの総称であり、ソフトフェア開発で使われている構築パターンとしても呼ばれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

Q&A

解決済

5回答

4339閲覧

CakePHPで、モデルに何でもつっこむ?

kururi10

総合スコア27

MVC

MVC(Model View Controller)は、オブジェクト指向プログラミングにおけるモデル・ビュー・コントローラーの総称であり、ソフトフェア開発で使われている構築パターンとしても呼ばれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

0グッド

1クリップ

投稿2015/07/26 14:00

CakePHPで、ビジネスロジックはモデルに書くべしという事が良く言われていますよね。

そこでお聞きしたいのですが、

1箇所でしか使わない処理でも(使いまわすことのない処理)でも
モデルに書いたほうがいいのでしょうか?

ご回答宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答5

0

1箇所でしか使わない処理でもモデルに書くことはよくあります。
コントローラーにも書けるが、モデルに書いた方がいいという処理はモデルに書きます。
M,V,Cの使い分けを行うという事です。

投稿2015/07/26 14:04

rik

総合スコア1151

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

rik

2015/07/26 14:21 編集

コントローラの補助機能はコンポーネントですのでモデルではありません。 コントローラで同じ処理が沢山ある場合はコンポーネントで対応するかコントローラを増やします。 コントローラの重複処理をモデルに押し込んでしまうのではありません。 コントローラ、モデル、ビュー、はそれぞれの使い道で使い分けるべきで、どちらに書いても動作しますがどちらに書くべきかはMVCに沿った記述をするべきです。
kururi10

2015/07/30 04:04

お返事が遅れてしまい申し訳ありません・・・。 ご回答いただき、ありがとうございます。 なるほど、コントローラの重複処理用には コンポーネントがありましたね。 やはりMVCに沿った記述がベストだということなのですね。 rikさんは、何かの本とかでMVCを学ばれて、 それにそってCakeで組まれていらっしゃるという感じでしょうか? Cakeの本は基本的なことしか書いてないし、 ネットだと体系的になっていないので、 何かしっくり来ないんですよね・・・。 Cakeのソースコードにまでしっかり応用できる、 MVCに関する本のオススメなどご存知でしたら 教えていただけると嬉しいです。
rik

2015/07/30 07:03

よく本屋に行きますが、CakePHPの本を見つけるとほぼ全て購入しました。 ただし、本の内容も役に立つのですが、ここ2年間、ほぼCakePHPの仕事だったという事が大きいと思います。自分なりに色々工夫して、最初はめちゃくちゃでしたが最近は理想形に近い感じで書けていると思います。 一番最初はCakePHPを使わざるを得ない状況下で無理やり学習を開始したのですが、今では自分用に作成したライブラリも増えてきましたし、進んでCakePHPを選ぶようになりました。
kururi10

2015/07/31 08:50

早速のお返事をいただきありがとうございます。 おお!ほぼ全てcake関連の本は購入されたのですね! それでもやはり、業務で使ったことのほうが 直接的に身になったという感じなんですね。 最初は色々変なところがあっても、最終的には 理想な形になっていくということで、 自分も少しずつ進めたいと思います。 ありがとうございます。
guest

0

使いまわさないつもりでも、ビジネスロジックは基本的にモデルのメソッドにするのがよいかと思います。

まず使いまわさないつもりでももしかしたら再利用することがあるかもしれないというのと、メソッドにわけて入出力をはっきりさせることでユニットテストがしやすくなるという利点があります。

投稿2015/07/27 01:04

ikuwow

総合スコア462

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kururi10

2015/07/30 04:17

ikuwowさん お返事が遅れてしまい申し訳ございません・・・。 ご回答いただきましてありがとうございます。 なるほど、もしかしたら今後使うかもしれないというのも 1つあるのですね。 しっかりとメソッドにわけることでユニットテストをしやすくなる というのも良いところということなのですね。 ikuwowさんは、そういったMVCをCakeにしっかり反映されるのに どこで学ばれましたか? Cakeにすぐに適用できるような、MVCの概念を勉強できる書籍など でおすすめがあれば教えていただけると嬉しいです。
guest

0

ベストアンサー

本来はビジネスロジックとデータベース層が一体になってモデルとなってるので、ちょっとした処理でも、モデルに実装するのが良いと思います。
ただ、モデルが無駄に肥大化することにモヤモヤする気持ちがあるようなら、Railsみたいにモデルをデータベース層と位置づけて、ビジネスロジックをコントローラに実装するのもありかも。
本来のやり方ではないけれど、うちのチームではこういうルールでmvcモデルを運用してますって周知すれば問題ないんじゃないですかね。

投稿2015/07/27 00:46

kzyplus

総合スコア62

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kururi10

2015/07/30 04:13

kzyplusさん お返事が遅れてしまい、申し訳ございません・・・。 ご回答をいただきまして、ありがとうございます。 なるほど、ルールを周知すれば、 モデル肥大化を避ける方針でもいいかもしれないということなのですね。 CakePHP3が、モデルの肥大化問題を解消する方向 にいっているということなので、そういう形にも 持っていける感じですかね。 kzyplusさんは、MVCを書籍などで学ばれたのでしょうか? Cakeでのモデルの切り出しや、そのほかのMVCの 実例についてCakeに特化しての本が あまり見つからないもので、 何か体系的にCakeでのMVCが学べるものがあればいいなあと 思っています・・・。
kzyplus

2015/07/30 04:21 編集

cakeの実例を知りたいなら、プラグインとか見てみると参考になると思いますよ。 ショッピングカート機能とか、cmsとかいろいろありますよね。 一番共感できるプログラムの真似をするところからはじめてみると良いと思います。
kururi10

2015/07/31 08:57

投稿日時を見るとすぐにお返事を頂いていたようで、 素早いご回答ありがとうございます。 なるほど、プラグインを参考にして 気に入ったものを真似してみるといいのですね。 なんか、プラグインは素人が作ったものも 紛れ込んでいるといったイメージがあるので どれを参考にしてみればいいのかいまいちわからないのですが、 kzyplusさんがコーディングの参考にしている プラグインの中でおすすめはありますか?
kzyplus

2015/07/31 09:06

symfonyでmvc知り、簡易版のcodeigniterなんかで遊び、cakeに落ち着いた感じだったので、cakeだけを極めようみたいな感じで参考にしたものはあまりないです。。 ショッピングカートのプラグインは人気みたいですね。 適当なものを参考にして、まずは好みで自分で組んでみて、運用していく中で、あーもっとこういう構成にしとけば良かったー!みたいな反省を繰り返すうちに自分のパターンが見つかると思いますよ。 100点満点は意識しておくにこしたことはないですが、プログラミングって、習うより慣れろだと思うんで、どんどんcakeをいじくりまわしてください
kururi10

2015/07/31 10:34

なるほど、symfonyから入られたのですね。 やっぱり色々見てみたほうがいい感じですかねー。 少しずついじっていきたいと思います。 ありがとうございます。
guest

0

何でもモデルに組めばいいわけではないので、ユニットテストを組むときに判断します。
もちろん実装する前にテストを組みます。大抵は、モデルに組んだ方がテストしやすいので、
そっちに組み込んでしまうことが多いです。

投稿2015/07/27 00:38

okinaka3

総合スコア304

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kururi10

2015/07/30 04:09

okinaka3さん お返事が遅れてしまって、申し訳ございません・・・。 ご回答いただきまして、ありがとうございます。 ユニットテストを組みやすくするために、 モデルに組み込んでいるという感じでいらっしゃるのですね。 okinaka3さんがMVCを学ばれたのは 何か書籍などでしょうか? Cakeに応用できる形でMVCを学ぶのに おすすめの本などがありましたら 教えていただけると嬉しいです。
guest

0

1箇所しか使わなくてもモデルに書きますねぇ私は。
コントローラーはあくまで橋渡してきな役割だと考えてます。

投稿2015/07/26 19:53

yu-ri

総合スコア634

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kururi10

2015/07/30 04:06

yu-riさん お返事が遅れて申し訳ございません・・・。 ご回答いただきましてありがとうございます。 あくまでコントローラには橋渡しとしての役割しか持たせない という方針がよろしいのですね。 yu-riさんは、どこでMVCを学ばれて、 それをCakeに応用されていらっしゃいますか? Cakeに応用できる形で説明されているような おすすめの書籍などありましたら、教えていただけると幸いです。
yu-ri

2015/07/30 04:48

複数のモデルで得たデータをモゴモゴしたりとかはコントローラでやっちゃいますけど、モデルで終わる処理は極力モデルに書き書きしてます。 私は仕事で強制的にcakePHPを使うことになり、MVCを覚えさせられました。 最初はコントローラにバリデーションとか書いて呆れられたものです(笑) 今は単純なPHPのソースでもMVCを意識して作るようになりました。 書籍ですと、cake限定になりますが、秀和システムから出ている、『オープンソース徹底活用 CakePHP2.1によるWebアプリケーション開発』という本が分かりやすいです。2.1となっていますが、2系であれば大体つぶしがききます。
kururi10

2015/07/31 08:54

早速のご回答をいただき、ありがとうございます。 最初は非効率なこともあったけど、今はしっかりとMVCを 意識して作ることができるようになられたのですね。 『オープンソース徹底活用 CakePHP2.1によるWebアプリケーション開発』 ですかー、 ちょっと書店で見てこようと思います。 モデル内で終わる処理は極力モデルに書き書きするように 意識すると良いのですね。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問