phpその1(DEC) > phpその2(DEC)> php10days

第10日 PHP5でより高度なプログラミング技法

1時限目:クラスの基本概念
2時限目:継承や多態性でオブジェクト指向の理念を理解
3時限目:テンプレートエンジンSmartyの基本
「オブジェクト指向」、PHP5では、PHP4に較べて大幅にオブジェクト指向構文が強化され、Javaさながらのコーディングが可能になっています。もう一つが「テンプレートエンジン」Smartyです。Smartyを利用することで、プログラムとHTMLレイアウトとを完全に分離でき、デザインとプログラムの分業も効率的に行うことができます。

◆◆◆◆まとめ(1時限目)◆◆◆◆

●クラス配下で定義された関数、変数を「メンバ関数」「メンバ変数」、または「メソッド」「プロパティ」と言います。
●クラスには、インスタンスのタイミング、破棄のタイミングで呼び出される_construct、 _destructという特殊なメソッドを定義できます。これらをそれぞれ「コンストラクタ」「デストラクタ」といいます。
●クラス化の重要な目的の一つに「カプセル化」があります。カプセル化とは、クラス内のメンバーを隠蔽(いんぺい)し、操作しても安全な機能だけを外部に公開することを言います。
●PHPでは、「public」「protected」「private」という3つのアクセス修飾子があります。
●static修飾子を付加したメソッドは、インスタンス化することなく、クラス名から直接にアクセスすることができます。このようなメソッドを「静的メソッド」と言い、「::」演算子で呼び出します。
●PHPには、_autoload関数や_call、_get、_set関数など、独自のオブジェクト指向構文が用意されています。
★PHP5で「オブジェクト指向」機能が大幅に強化。

10サンプル(day10-1) ①call.php day10-1.htmlファイル(ソース)
  ②Triangle.class.php day10-1.htmlファイル(ソース)
①・autoloal関数の定義・Triangleのクラスのインタンス化
②・コンストラクタ・アクセサメソッド・get_areaメソッド・calulate_areaメソッド(静的メソッド)

◆◆◆◆まとめ(2時限目)◆◆◆◆

●あるクラスの機能を引き継ぎつつ、新しいクラスを定義することを「継承」と言います。継承元のクラスを「スーパークラス」、継承先のクラスを「サブクラス」と言います。
●スーパークラスのメソッドをサブクラス側で上書きすることを「オーバランド」と言います。PHP5以降では、final修飾子を利用することで、オーバランドを禁止することができます。
●ポリモーフィズムとは、あるクラスのサブクラス間のメソッドが同名にもかかわらず、異なる挙動を実現することを言います。
●サブクラスが同名のメソッドを持つことを保証するには、抽象クラスやインターフェースを利用すると便利です。
●抽象クラスは、中身を持たない抽象メソッドを含むクラスのことを言います。抽象クラスはそれ自身はインスタンス化できません。
●インタフェースは中身を一切持たないメソッドの名前だけが定義された「特別なクラス」です。インタフェースはクラスと異なり、複数個を同時に実装(多重継承)できるのが特徴です。
★オブジェクト指向プログラミングの学習。抽象クラスFigure、サブクラスTriangle、Squareを利用して継承と多態性(ポリモーフィズム)について学習。

10サンプル(day10-2) ③call.php day10-2.htmlファイル(ソース)
  ④Figure.class.php day10-2.htmlファイル(ソース)
  ⑤Triangle.class.php day10-2.htmlファイル(ソース)
  ⑥Square.class.php day10-2.htmlファイル(ソース)
③autoload関数の定義・Triangleクラスの呼び出し・Squareクラスの呼び出し
④・コンストラクタ・アクセサメソッド・抽象メソッド
⑤・コンストラクタ・get_areaメソッドのオーバライド
⑥・コンストラクタ・get_areaメソッドのオーバライド

◆◆◆◆まとめ(3時限目)◆◆◆◆

●テンプレート・エンジンとは、「テンプレート」を動的に解釈し、動的にページを生成するための実行エンジンです。
●テンプレート・エンジンSmartyは、(1)コンパイル型であるため、処理パフォーマンスが高い、(2)ライブラリが豊富です。(3)機能の拡張が容易である、などの特徴があります。
●Smartyのコアな機能を担うには、Smartyクラスの役割です。一般的にはSmartyクラスを直接使うのではなく、サブクラスを定義し、アプリケーシヨンからはこのサブクラスを利用します。
●Smartyクラスは、テンプレート変数を登録。assignメソッドやテンプレートを呼び出すdisplayメソッドまどが用意されています。
●テンプレート・ファイルでは、関数や修飾子、変数などの様々な要素を「{~}」で定義されたブロックの中に記述することができます。
★テンプレートエンジンSmartyを利用して、schedule_read.phpを書き出す。

10サンプル(day10-3) ⑦schedule.php △ day10-3.htmlファイル(ソース)
  ⑧MySmarty.class.php day10-3.htmlファイル(ソース)
  ⑨schedule.sqlite day10-3.htmlファイル(ソース)
  ⑩schedule.tpl day10-3.htmlファイル(ソース)
⑦入力したスケジュール情報を一覧表示。・scheduleテーブルの内容を連想配列にコピー。・テンプレート変数の割り当て。・Squareクラスの呼び出し。
⑧・コンストラクタ・デストラクタ
⑨・連想配列の内容を順に出力。