PHP:クラス
概要
PHP は、 オブジェクト指向プログラミング (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;