
PHPで小規模~中規模なシステム構築を行っております者です。
例えば、下記のようなものです。
(1)小規模:簡易な新着ニュースの更新のみ行うCMSなど
(2)中規模:ショッピングカートなど
今回、自身の作ってきたシステムをリニューアルするにあたり、
勉強も兼ねてMVCというものを意識して構築してみようかと思ったのですが、
調べれば調べるほど役割やファイルの分け方で迷ってしまうばかりです。(特にCとM)
なお、cakePHPなどは使っておりません。
smartyは使用しています。
(1)を使って示しますと、例えば下記のようなファイルわけをしていたとします。
(レイアウト崩れが怖いため、中途半端なツリー記載ですがご勘弁ください。)
index.php ・・・ IDパスが未入力の場合はログイン画面を、入力済の場合は管理画面トップ
┃
┣ controllers ━ control用php
┃
┣ models ━ 登録処理class.php DB接続class.php ログイン関連class.php(ログイン・ログアウト処理、ログイン保持など)
┃
┣ views ━ 各種tpl
┃
┗ その他ファイル(smarty,pear,DB接続情報等記載ファイル,共通使用変数など記載ファイル)
色々なところで見かけるのは、C.M.V、いずれもclassなどが記載してあるのみですが、
そのクラスをどこで宣言し、どこで使っているのかが良く分かりません。
例えば、 パラメーターが ・・・・・?action=config&news_id=15 とあり、
DB内のid15の記事を抽出し、
今行うべき処理が?action=configより記事の更新だと判断し、
画面を表示するという処理の流れがあるとします。
その場合、
●パラメーターの$_GETはどこに書くのか?
●?action=configより処理が記事の更新だとの判断は
●その他ファイル(smarty,pear,DB接続情報等記載ファイル,共通使用変数など記載ファイル)の読み込みはどこで行うのか?
●modelsのclassをnewで宣言するのはどのファイルなのか?
など、
現在私が行っている方法は、
index.phpに上から
・セッションスタート
・各種定数および変数の記載
・smarty設定
・DBクラスなど必ず使うものを宣言
・パラメーターから判断して必要なクラスを読み込んで宣言+処理記載(switchで切り替えてます)
・smartyのdisplayでtplの内容を表示
というものをすべて記載しております。一応形としてはCにあたるのでしょうか。
上のツリーではcontrollers ディレクトリがありますが、
この内どれかをそこに移し、index.phpから読み込むべきでしょうか?
(今のところ役割がみあたりません)
また、modelsというのは要するにclassなどが記載してあるだけでしょうか?
models内ではnewせず$_GETせず、models内のclassの処理を実際に
実行する記載は「C」に書くということでしょうか。
よくわからない文章になってしまい申し訳ございません。
正解はないかもしれませんので、あくまで皆様の行っているやり方や一般的に使われている方法で結構です。
ファイルわけや処理の記載についてお教えいただけると幸いです。
よろしくお願いいたします。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
とりあえずフレームワークでも勉強したら?
基本的にデザイン→コーディング→プログラムと一人作業なので、
細かに分けると逆に面倒ぐらい思って作業しておりましたが、
いざしっかり分けてみると管理しやすいものですね。
フレームワークについてもまだまだ完璧に理解は及んでおりませんが、
少しづつでもモノに出来ればと思います。
ご回答ありがとうございます。
No.1
- 回答日時:
私はこんな感じです。
Front
・初期化処理
・リクエストの処理(補完
・ルーティング(何をどうするリクエストか判断
・ディスパッチ(Controllerをコール
Controller
・リクエストを詳細に分析
・Modelにパラメータを与えデータを取得
・リクエストに適したViewをコール
Model
・リクエストに依存せず要求されたデータを生成する
View
・データを整形し出力を決定
●パラメーターの$_GETはどこに書くのか?
直接のアクセスはフロントだけで十分。
●?action=configより処理が記事の更新だとの判断は
ルーティングに相当しますがconfigは設定の意味で使います。
●その他ファイルの読み込みはどこで行うのか?
ライブラリは使うときだけControllerやModelで指定します。
●modelsのclassをnewで宣言するのはどのファイルなのか?
インスタンスはControllerで生成します
ご回答ありがとうございます。
front controller辺りも迷いがあったので参考にさせていただきます。
小規模・中規模システムとはいえ、
読み込み等に無駄が多かったので、
必要なものだけ厳選してもう少しスマートな記述を心がけたく思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
apache+phpにおいてリクエスト...
-
.phpファイルが、表示されない
-
サーバー間のファイルの移動(コ...
-
cakephpで特定ファイル表示(hta...
-
textファイル内のデータをルー...
-
PHP内 メールアドレス 暗号化...
-
phpMyAdmin-5.0.4-all-language...
-
PHPでフォルダ選択ダイアログを...
-
サイトのphpソースコードを表示...
-
【file_exists】ファイルが存在...
-
iphoneで虫眼鏡の作り方
-
FTPコマンドでディレクトリごと...
-
makefile でファイルをコピーす...
-
movabletypeでPDFファイルをア...
-
onedrive にexcelファイルをア...
-
Subversionのリポジトリの削除
-
PHP PDOライブラリが読み込まれ...
-
PHPのタイムアウトについて
-
awkの正規表現について
-
phpでのHTMLの表示(特にJavasc...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
.phpと.incファイルの違いはな...
-
.phpファイルが、表示されない
-
【file_exists】ファイルが存在...
-
URLが.PHPってどういう...
-
PHPを使ってのサーバ上ファイル...
-
EUC_JP と EUC-JP
-
htdocsフォルダ以外ではPHP...
-
さくらレンタルサーバーでPHPが...
-
htmlspecialcharsが機能してい...
-
CakePHPの .htaccess設定について
-
PHPでフォルダ選択ダイアログを...
-
PHPの戻り値をWINDOWSバッチフ...
-
phpのファイル制御関数について...
-
サーバ無しでphpを動作させる
-
別のドメインのファイルをrequire
-
サイトのphpソースコードを表示...
-
sendmailのパス指定方法
-
apacheで拡張子を省略してアク...
-
クラスが使えない。
-
session_start()でwarningが表...
おすすめ情報