/bonvhp/webapp/PHP       [後へ]   [目次へ]   [次へ] ~ [] ~

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;
/bonvhp/webapp/PHP       [後へ]   [目次へ]   [次へ]