PHPでMVC requireや$_GET記載場所
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」に書くということでしょうか。
よくわからない文章になってしまい申し訳ございません。
正解はないかもしれませんので、あくまで皆様の行っているやり方や一般的に使われている方法で結構です。
ファイルわけや処理の記載についてお教えいただけると幸いです。
よろしくお願いいたします。
お礼
ご回答ありがとうございます。 とても納得できました。一人で開発を行う環境なものですから、 実際に『生産性が最も高い』方法で開発を行っておりました。。 現在はメンバ変数をprivateな環境に変えつつありますが、 どの範囲までアクセサを設けるべきなのかどうか等を考える様になり、質問させていただきました。 PHPは直接操作でも中途半端に動いてしまうので、良い様に言えばお手軽ですが、 ソースが手に負えなくなる可能性の高い言語ですね。 ありがとうございましたm(_ _)m