第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で「オブジェクト指向」機能が大幅に強化。
①・autoloal関数の定義・Triangleのクラスのインタンス化 |
②・コンストラクタ・アクセサメソッド・get_areaメソッド・calulate_areaメソッド(静的メソッド) |
※ |
◆◆◆◆まとめ(2時限目)◆◆◆◆
●あるクラスの機能を引き継ぎつつ、新しいクラスを定義することを「継承」と言います。継承元のクラスを「スーパークラス」、継承先のクラスを「サブクラス」と言います。
●スーパークラスのメソッドをサブクラス側で上書きすることを「オーバランド」と言います。PHP5以降では、final修飾子を利用することで、オーバランドを禁止することができます。
●ポリモーフィズムとは、あるクラスのサブクラス間のメソッドが同名にもかかわらず、異なる挙動を実現することを言います。
●サブクラスが同名のメソッドを持つことを保証するには、抽象クラスやインターフェースを利用すると便利です。
●抽象クラスは、中身を持たない抽象メソッドを含むクラスのことを言います。抽象クラスはそれ自身はインスタンス化できません。
●インタフェースは中身を一切持たないメソッドの名前だけが定義された「特別なクラス」です。インタフェースはクラスと異なり、複数個を同時に実装(多重継承)できるのが特徴です。
★オブジェクト指向プログラミングの学習。抽象クラスFigure、サブクラスTriangle、Squareを利用して継承と多態性(ポリモーフィズム)について学習。
③autoload関数の定義・Triangleクラスの呼び出し・Squareクラスの呼び出し |
④・コンストラクタ・アクセサメソッド・抽象メソッド |
⑤・コンストラクタ・get_areaメソッドのオーバライド |
⑥・コンストラクタ・get_areaメソッドのオーバライド |
※ |
◆◆◆◆まとめ(3時限目)◆◆◆◆
●テンプレート・エンジンとは、「テンプレート」を動的に解釈し、動的にページを生成するための実行エンジンです。
●テンプレート・エンジンSmartyは、(1)コンパイル型であるため、処理パフォーマンスが高い、(2)ライブラリが豊富です。(3)機能の拡張が容易である、などの特徴があります。
●Smartyのコアな機能を担うには、Smartyクラスの役割です。一般的にはSmartyクラスを直接使うのではなく、サブクラスを定義し、アプリケーシヨンからはこのサブクラスを利用します。
●Smartyクラスは、テンプレート変数を登録。assignメソッドやテンプレートを呼び出すdisplayメソッドまどが用意されています。
●テンプレート・ファイルでは、関数や修飾子、変数などの様々な要素を「{~}」で定義されたブロックの中に記述することができます。
★テンプレートエンジンSmartyを利用して、schedule_read.phpを書き出す。
⑦入力したスケジュール情報を一覧表示。・scheduleテーブルの内容を連想配列にコピー。・テンプレート変数の割り当て。・Squareクラスの呼び出し。 |
⑧・コンストラクタ・デストラクタ |
⑨・連想配列の内容を順に出力。 |
⑩ |
※ |