第6章 オブジェクト
教科書「プログラミングPHP 第2版」
上級試験は、オライリーから出版されているプログラミングPHP 第2版を教科書に出題されます。
オブジェクトの基礎
- オブジェクトはクラスのインスタンス。
- オブジェクトに関連づけられるデータはプロパティ、オブジェクトに関連づけられる関数はメソッド。
- カプセル化することでデバッグとメンテナンスが容易になる
- 派生クラスは、基底クラスのプロパティとメソッドを継承し、さらに派生クラス独自のものを追加できる。
オブジェクトの作成
- $オブジェクト名 = new クラス名;
- new Person('Fred', 35) のように引数を取れる
- クラス名を可変にできる
プロパティ/メソッドへのアクセス
- ->を用いてアクセス
- プロパティ名は可変にできる
- スタティックメソッドは、クラス名+コロン2つ+メソッド名。定義時にstaticをつける。
- オブジェクトは参照渡し。必要ならclone演算子を使う。
クラスを定義する
- クラス名は大文字小文字を区別しない。stdClassというクラス名は予約語。
- メソッドはクラス内でfunction。アンダーバー2つで始まる名前は予約語、あるいは将来予約語になる可能性がある。
- メソッドがオブジェクトのプロパティにアクセスするときは、$this->
- スタティックメソッドはstaticを前置する。
- finalをつけると、派生クラスでオーバーライドされない
- プロパティは、アクセス権public, private, protectedが指定できる。
- クラス内定数はconst
- 基底クラスを継承するextends
- 基底クラスのメソッドは、基底クラス名+コロン2つ+メソッド名。自分のクラスのメソッドは、self::メソッド名
- インターフェースは、クラスが実装すべきメソッドを指定するが、メソッドの内容は持たない
- 抽象メソッドは、派生クラスが実装すべきメソッドを指定するが、メソッドの内容は持たない
- コンストラクタは、オブジェクトをインスタンス化するときに実行。__construct
- 派生クラスでは、基底クラスのコンストラクタは自動では読み込まない。
- デストラクタは、オブジェクトを破棄するときに実行。
調査する
- クラスが存在するか調べるclass_exists
- 定義済みクラスを取得するget_declared_class
- クラス内のメソッドを取得するget_class_methods、プロパティを取得するget_class_vars
- 基底クラスを取得するget_parent_class
- オブジェクトかどうかをチェックするis_object
- メソッドが存在するか調べるmethod_exists
シリアライズ
- オブジェクトデータをファイルに保存できるように一次元化する
- serializeの逆はunserialize
- シリアライズの直前に__sleepを実行。
- アンシリアライズの直後に__wakeupを実行
- ログファイルのクローズ、オープン等。
※原書を元にしています。日本語訳本とは用語等が異なる可能性があります。
Copyright (C) 2003-2018. PHP で WEB 作成 All rights reserved.