PHP:クラス
●概要
PHP5 は、
オブジェクト指向プログラミング (OOP) をサポートする機能を持ちます。
# OOP そのものの説明をするのは大変なので、
# 不安な方は、オブジェクト指向関連をググるなどしてみてください。
クラス定義は、class キーワードで始まり、
クラス名、メンバーやメソッドが続きます。
例えば、以下のようです。
class MyName {
private $real_name;
public function __construct() {
$this->real_name = 'Hoge Hoge';
}
public function getRealName() {
return $this->real_name;
}
}
$o_MyName = new MyName();
echo $o_MyName->getRealName();
では、以下、細かく見ていきます。
●インスタンスの生成
クラスのインスタンスを生成するには、new を使用します。
new の後に、クラス名() とします。
$o_MyName = new MyName();
の部分です。
外部から、クラスのメンバーやメソッドを使うには、
インスタンス名->メンバーorメソッド
を使います。
$o_MyName->getRealName()
の部分です。
クラス内で宣言したメンバーやメソッドを、
クラス内で使うには、
$this->変数名
を使います。
クラス内でも自由に変数が使えるので、
単なるローカル変数と、クラスのメンバーを
区別するために $this が必要になります。
●コンストラクタとデストラクタ
コンストラクタは、インスタンスが生成される時に、
デストラクタは、インスタンスが破棄される時に、
それぞれ呼ばれます。
コンストラクタの関数名には __construct を
デストラクタの関数名には __destruct を
使用します。
# 必要なければ、省略できます。
コンストラクタで初期化して、
デストラクタで後始末する、
という事です。
●アクセス権
クラスの特徴の一つに、「隠ぺい」機能があります。
PHP でも、3種類の設定が可能です。
・public
public 宣言されたメンバ、メソッドは、
どこからでもアクセス可能です。
宣言を省略すると、この public になります。
# クラスの外部とのやり取りで使用します。
・protected
protected 宣言されたメンバ、メソッドは、
宣言したクラス自身と、
そのクラスと継承関係にあるクラス内部でのみ使用可能です。
# 主に、継承によって機能を拡張する場合に使用します。
・private
private 宣言されたメンバ、メソッドは、
宣言したクラス自身のみで使用可能です。
継承した子クラスでも使えません。
# 他から操作されたくない機能を、
# 外部から守るために使用します。
●継承
クラスの特徴の一つに、「継承」機能があります。
PHP の継承は、extends を使います。
// 親クラス
class BaseName {
protected $real_name = "my name";
}
// 子クラス
class MyName extends BaseName {
public function subFunc() {
echo $this->real_name;
}
}
$o_MyName = new MyName();
$o_MyName->subFunc();
親クラス(BaseName) で初期化した $this->real_name が、
子クラスでもそのまま使えています。
なお、
親のコンストラクタは、自動では呼ばれないので、
必要なら、子クラスのコンストラクタ内で呼ぶ必要があります。
親のメソッドにアクセスするには、
parent::親のメソッド名
を使用します。
「::」を、スコープ定義演算子といいます。
●static
メンバーやメソッドを static として宣言すると、
インスタンス化なしで使う事ができます。
class MyName {
public static $name = "Hoge Hoge";
}
echo MyName::$name;