PHPのクラス・オブジェクトプログラミング
PHPクラス・オブジェクトの基本的な記述方法とプログラミング
PHPクラスの基本的な記述方法※画像クリックで拡大表示
※アイコンの機能:表示 実行 ダウンロード
- PHPのクラス・オブジェクトは、
クラス・オブジェクトの3大機能である「カプセル化」はアクセス修飾子で実現し、「継承」は単一継承のみで、「ポリモーフィズム」は抽象クラスとインターフェースの機能で実現しています。多重継承は、インターフェースを活用して実現可能です。 - PHPクラス・オブジェクトの利用概念
PHPで実現する電卓機能は、クラス・オブジェクトを利用しない場合でも作成できますが、「クラスの定義」して、そのクラスを「オブジェクト作成」し、「プロパティ」参照や「メソッド」実行のプログラミングを事例として概念とルールの理解を深めます。
- クラスの定義は、4つの機能「プロパティ」「コンストラクタ」「メソッド」「デストラクタ(省略可能)」から構成され、カプセル化機能の「アクセス修飾子」である「public」や「private」などを指定します。
- クラスのインスタンス化(オブジェクト化):"new"する際に、引数を指定して初期データ設定などの「コンストラクタ」で定義している内容が自動的に実行されます。
- インスタンス化した変数(オブジェクト型)に「オブジェクト演算子:"->"」を付加し、クラスで定義した「プロパティ」や「メソッド」を指定することで参照・設定や実行ができるようになります。
- 「クラス定義」プログラムは、一般的に別ファイルにすることで、他のプログラムでその機能のクラス・オブジェクトを利用することが可能となり、プログラムの構造化や修正が簡単化などのメリットが計られます。
項目 PHPプログラム内容 PHPクラス:電卓機能 「PHPクラス定義の電卓機能のプログラム記述」 「PHPクラス定義の電卓機能を利用したオブジェクト生成、プロパティ、メソッドのプログラム記述」 - PHPクラス・オブジェクトの基本的な記述方法
※上記のPHPクラスの記述方法プログラム→
- クラスの定義は、
「class "クラス名" { ... }」の形式で、中括弧の中にはクラスの「プロパティ」と「メソッド」の定義を記述します。クラスの中には、定数やプロパティ(変数)、メソッド(関数)を含めることができます。
- クラスのコンストラクタは、
「__construct ([ = "" [, $... ]] )」の形式で、クラスのコンストラクタメソッドを宣言することができます。コンストラクタメソッドを有するクラスは、新たにオブジェクトが 生成される度にこのメソッドをコールし、必要な初期化を行うことができます。
「継承」した子クラスのコンストラクタがある場合、親クラスのコンストラクタがコールされないので親クラスのコンストラクタを実行するには、子クラスのコンストラクタの中で「parent::__construct()」のコールが必要です。 - クラスのデストラクタは、
「__destruct (void)」の形式で、特定のオブジェクトを参照するリファレンスがひとつもなくなったときにコールされ、またスクリプトの終了時にも順不同でコールされます。「exit()」関数で処理を停止した場合にもデストラクタはコールされます。
コンストラクタと同様、親クラスのデストラクタを実行するには、 デストラクタの中で明示的に「parent::__destruct()」のコールが必要です。子クラスでデストラクタを定義していない場合は 親クラスのデストラクタを継承します。 - クラスのプロパティは、
クラスのメンバ変数であり、プロパティを定義するには"public"、"protected"、"private"キーワードの「アクセス修飾子」のあとに通常の変数の宣言を記述します。宣言時に初期値を設定できますが、初期値は定数値でなければなりません。 - クラスのメソッドは、
「[アクセス修飾子] function メソッド名 ([引数]){ ... }」の形式で、自分自身クラスを表す疑似変数「$this」が利用可能であり、「$this->プロパティ」のように記述します。 - クラスの継承(インヘリタンス)は、
「子クラス名」として記述し、「親クラス(スーパークラス)」名の前に「extends」キーワードを宣言して、親クラスのメソッドとプロパティを継承することができます。
継承されたメソッドやプロパティを「オーバーライド」するには、 親クラスで定義されているのと同じ名前でそれを再宣言します。但し、親クラスのメソッドが「final」定義されている場合はオーバーライドできません。 - オブジェクト(インスタンス)は、
「new "クラス名"([引数])」の形式で、クラス名の前に"new"キーワードを使い、インスタンス化することができます。「引数」の内容が設定されている場合は、インスタンス化される前にクラスのコンストラクタ処理がコールされます。 - オブジェクトのプロパティ、メソッドは、
オブジェクト化された変数を利用して、「オブジェクト演算子:"->"」を付加して、クラスのプロパティやメソッドのアクセス("public"のアクセス修飾子付きのもののみ)ができ、「オブジェクト変数->プロパティ」「オブジェクト変数->メソッド()」の形式で記述します。
- クラスの定義は、
PHPクラスのプログラミング
- PHPクラス・オブジェクトプログラミングの記述方法は、
- PHPのクラス・オブジェクト概要まとめ(PDF)