PHPコーディング

オブジェクト指向で書いてみる

2010年11月17日
いよいよオブジェクト指向で書いてみました。
PHPのオブジェクト指向入門 | オブジェクト指向PHP.NETとにらめっこしながら、自分のサイトに当てはめてみます。

まずは各ページで共通にある処理を洗い出してみます。
DB接続、DB切断などがありました。

abstract class BaseProcess{
  abstract protected function Main();
  public function strExec(){
    DB接続
    //メイン処理
    $this->strHTML = $this->Main();
    DB切断
  }
}

こんな感じで共通クラスを作ります。
各ページの処理はこのクラスを継承します。

それぞれのページを見ると、いくつかのパターンに分類できます。
・左メニューとメインメニューのある2カラムページ
・左ではなくページの上にメニューがあり、その下にマニュアルのあるマニュアルページ
・商品を売っているセールスページ
などです。

次に、例えば、2カラムページを処理するクラスを作ります。

abstract class TwoColum extends BaseProcess{
  public function Main(){
    DBからデータ取得
    左メニュー作成
    ヘッダ作成
    コンテンツ作成
    htmlタグ作成
    return $html
  }
}

これでBaseProcessが継承されます。
DBからデータを取得する部分は、表ページの表示にも使いますが、管理画面でも使うので、これもクラス化しておきます。

TwoColumを実行したときの実際の処理は、
 1. DB接続
 2. DBからデータ取得
 3. 左メニュー作成
 4. ヘッダ作成
 5. コンテンツ作成
 6. htmlタグ作成
 7. DB切断
となります。

TwoColumを呼び出すPHPでは、

//外部ファイル読み込み
 require_once('・・・');
//インスタンス作成
 $proc = new ContentProcess();
//実行&htmlタグ受取
 $html = $proc->strExec();
//出力
 echo $html;

これだけです。
なんか物足りない。ちょっと不完全燃焼。
でも不完全燃焼ってことは、コーディングが楽ってこと?

しかも、最終呼び出しPHPはどのファイルもほとんど同じになります。
最終PHPでhtml作成をする方法ももちろんあります。

以前にも感じていましたが、オブジェクト指向でコーディングするのって、手続型より設計が大切です。
ちゃんと構造を把握しておかないと、自分でわけがわからなくなりそうです。
だから他人が作ったオブジェクトってわかりにくいんだ・・・