REDLINE MAGAZINE | PHP修行 MVC復習/改善の巻REDLINE MAGAZINEトップページへ

すべてのエントリを見る

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さん
こんにちわ。コメントありがとうございました。
見えない作法、なんとなく実感中です。まだまだ勉強不足で理解してないことの方が断然多いのですけれども・・・><
頑張ります!




※コメント欄に「<」「>」等を含むソースを記載する場合は実体参照に変換してください。

このページの一番上へ

その他の情報など

最近のコメント

PHP オブジェクト指向の勉強
  • Red - 2010.01.08
  • hogepage - 2010.01.21
  • Red - 2010.01.22
  • - 2011.11.27
  • houseiii - 2011.11.27
Fireworks トリミング画像を一括書出 CS4編
  • Iper - 2009.06.27
  • Red - 2009.06.27
  • mala - 2011.11.17
  • Red - 2011.11.18
jQueryでボックスを上下左右中央に簡単配置
overflow を使用したボックス背景のこと
  • - 2007.12.13
  • Red - 2007.12.13
  • - 2007.12.13
  • Red - 2007.12.13
  • hj - 2011.09.23
IE6 → 透過PNG+overflow=混ぜるな危険(追記有)

メッセージを送る

こちらのメッセージ送信フォームは閉鎖させて頂きました。
御用の方は新しい方のブログ にコメント頂くか、 連絡用のフォーム もありますので、そちらからご連絡ください。