PHP修行 MVC復習/改善の巻
この前書いた「PHP宿題 MVC の勉強」のエントリのコメントでたくさんアドバイス頂いて、いろいろ改善してだいぶマシになったっぽいので復習日誌。
まず元々のMVCとか関係ないソース
MVCを意識しないでダダダーと書いた元々のソースはこんな感じ。(前回のエントリと同じ内容だけど、名前を入力して送信ボタンを押すと「○○さん、こんにちわ。」という文が表示されるだけの内容)
んで、これをMVCを意識して書き直したものを「PHP宿題 MVC の勉強」に書いたのですが、それに対しての改善案をいろいろ頂いたのです。
改善・第一弾
「おしい!MVCのとこもクラスだったらよかた^^
」と言われたのでこんな感じにしてみました。
改善した点
- モデル部分はクラスを使う!
- それに伴ってコントローラー部分も変更する
改善・第二段
上の改善第一弾に対して更に以下のアドバイスを頂いたのでやってみました。
改善した点
- クラスのプロパティはprivateにしてsetter/getterの仕組みを利用
- Helloモデル中でhtmlspecialchars()やPタグを使ってるが、これはviewに任せるべき。
- 1クラス1ファイルにしてクラス名とファイル名を一致させるとよい。
改善した理由
setter/getterの仕組みや使う理由についてはこちら。
ちょっと疑問に思ったけど、今回の内容のみで完結するような場合は(後で機能追加とか絶対ない場合)ここのgetName()は外から直接は使わないから書かなくてもいいんかなって思いました。それとも慣習的にsetNameおくならgetNameも必ずセットにして書いておくもの・・・?ま、ビビリなので確実に毎回セットにしてしまいそうな自分なのですが。あーでもオブジェクト指向という考え方自体が「後からでも手を入れやすい」とか「再利用しやすい」という考えを前提でやってるから必ずセットで入れておいた方がいいのか。
モデル内でhtmlspecialchars()やPを使わない理由は後で表示のみ変更したいのにロジックを弄らなければならなくなるから、とのこと。
そういえばSmartyでもテンプレート側でデザイナ(というかページの見た目担当の人)が{$hoge|escape}とか入れるのは同じ理由ってことですよね。となると、Smartyで修飾子つけて値を加工してるような部分ってのは全部Viewに任せちゃえばいいってことなんかな。そう考えると私的には役割分担がすごく分かりやすかったりするのだけれども・・・。
1クラス1ファイルにしてクラス名とファイル名を一致させるとよい理由は、ソースが見やすくなるのと__autoload()関数なんかが使えて便利だからとのこと。
確かに使ってみて「おおおおーー便利!」と実感しました。スゲーな。
もっとちゃんと考えること 変数の命名規則
同コメント内にて、「後は変数の命名規則に気をつけるとよいです。$Helloという変数名は違和感があります^^;
」というお話も頂きました。んで参考サイトもお教え頂いた。
変数名はどう付けよう? - ホリデープログラミング入門 - Yahoo!ブログ
よく使われる変数名やPEAR、Zendの命名規則の説明が書かれてた。メモメモ。なんかそれぞれに似てる部分と異なる部分があるのね。無難なの考えねば。とりあえず私もcamelCapsでこれから変数名は書いてみます。んでもってクラス名はUpper Camel、と。なんせちゃんと自分でルール決めて統一していけるように頑張ります。つーか、その前に英単語の勉強した方がいい気も・・・汗。
知らない事いっぱい。でもすっごく楽しいですwwww
いろいろとアドバイスくださった方々、ホントにありがとうございます!
<< PHP修行 「setter/getter」を知るの巻 | 近況とか。CSS,PHP雑記の巻。 >>
トラックバック
このエントリーのトラックバックURL:
http://redline.hippy.jp/cgi/mt/mt-tb.cgi/257
コメント (2)
こんにちは。
ネットサーフしているうちにたどり着きました。
自分はプログラマーとSEを10年近くしている者ですが、デザインは時間的制約とかから自分で突き詰めてやっているワケではなく、今ちょっと学習中です。
フレームワーク(MVC)やオブジェクト指向からプログラムを勉強しているのですね。
プログラムってなんとなく見えない作法があったりします。javaとか.netとかの作法があったり。
参考書の中ではUMLとか話が広がって話が煩雑になりがちですが頑張ってください。
また、見に来たいと思っています。
それでは。
投稿者: goodnews2777 | 2010年03月14日 22:53
>goodnews2777さん
こんにちわ。コメントありがとうございました。
見えない作法、なんとなく実感中です。まだまだ勉強不足で理解してないことの方が断然多いのですけれども・・・><
頑張ります!
投稿者: Red | 2010年03月16日 08:49